我在 Windows 7 中有一些文件,例如AAA_a001.jpg
, BBB_a002.jpg
,CCC_a003.jpg
我正在尝试使用批处理将这些文件重命名为a001_AAA.jpg
, a002_BBB.jpg
, a003_CCC.jpg
。
只是为了交换_
.
我一直在寻找一段时间,但仍然不知道如何做到这一点。任何人都可以帮忙吗?谢谢。
我在 Windows 7 中有一些文件,例如AAA_a001.jpg
, BBB_a002.jpg
,CCC_a003.jpg
我正在尝试使用批处理将这些文件重命名为a001_AAA.jpg
, a002_BBB.jpg
, a003_CCC.jpg
。
只是为了交换_
.
我一直在寻找一段时间,但仍然不知道如何做到这一点。任何人都可以帮忙吗?谢谢。
使用REN
命令
Ren
是为了rename
ren ( where the file is located ) ( the new name )
例子
ren C:\Users\&username%\Desktop\aaa.txt bbb.txt
它将 aaa.txt 更改为 bbb.txt
您的代码将是:
ren (file located)AAA_a001.jpg a001.AAA.jpg
ren (file located)BBB_a002.jpg a002.BBB.jpg
ren (file located)CCC_a003.jpg a003.CCC.jpg
等等
IT WILL NOT WORK IF THERE IS SPACES!
希望它有所帮助:D
@echo off
pushd "pathToYourFolder" || exit /b
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF"
)
popd
注意:名称在第一次出现时拆分_
。如果一个文件被命名为“part1_part2_part3.jpg”,那么它将被重命名为“part2_part3_part1.jpg”
正如Itsproinc所说,该REN
命令有效!
但如果您的文件路径/名称有空格,请使用引号“”
例子:
ren C:\Users\&username%\Desktop\my file.txt not my file.txt
添加 ” ”
ren "C:\Users\&username%\Desktop\my file.txt" "not my file.txt"
希望能帮助到你
我假设您知道_
下划线前后部分的长度以及扩展名。如果你不这样做,它可能比简单的子字符串更复杂。
cd C:\path\to\the\files
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3%
set q=%a:~4,4%
set b=%p_%q.jpg
ren %a %b
)
我只是想出了这个脚本,我没有测试它。查看这个和那个以获取更多信息。
如果您想假设您不知道 the 的位置_
和长度以及扩展名,我认为您可以使用 for 循环来检查 的索引_
,然后检查 的最后一个索引.
,将其包装在一个goto
东西中并让它起作用。如果您愿意解决这个问题,我建议您至少使用 WindowsPowerShell(或 Cygwin)(为了您自己)或安装更高级的脚本语言(想想 Python/Perl),您将获得更多支持方式。
我在代码中重命名
echo off
setlocal EnableDelayedExpansion
for %%a in (*.txt) do (
REM echo %%a
set x=%%a
set mes=!x:~17,3!
if !mes!==JAN (
set mes=01
)
if !mes!==ENE (
set mes=01
)
if !mes!==FEB (
set mes=02
)
if !mes!==MAR (
set mes=03
)
if !mes!==APR (
set mes=04
)
if !mes!==MAY (
set mes=05
)
if !mes!==JUN (
set mes=06
)
if !mes!==JUL (
set mes=07
)
if !mes!==AUG (
set mes=08
)
if !mes!==SEP (
set mes=09
)
if !mes!==OCT (
set mes=10
)
if !mes!==NOV (
set mes=11
)
if !mes!==DEC (
set mes=12
)
ren %%a !x:~20,4!!mes!!x:~15,2!.txt
echo !x:~20,4!!mes!!x:~15,2!.txt
)
PowerShell 方式对我有用,并且更易于理解和更改。但是,在rename-item : Source and destination path must be different
我稍作更改之前,出现了错误。仅重命名文件夹的文件:
目录 | Where-Object {$ .Name -match 'replaceMe'} | 重命名项目 -NewName { $ .Name -replace 'replaceMe','myNewText' }
递归重命名文件夹和子文件夹的文件:
Get-ChildItem -Recurse | Where-Object {$ .Name -match '.Core.'} | Rename-Item -NewName { $ .Name -replace '.Core.','.Framework.' }
你可以试试这个代码:
echo off
cd D:\TEMP
for %%A IN (*.jpg) do (
call :dothings "%%A"
)
cd D:\2
goto :eof
:dothings
set A=%1
set P=%A:~1,12%
set Q=%A:~14,4%
set B="%Q% %P%.jpg"
ren %a% %b%
goto :eof
它将例如“Untitled-227 1965.jpg”重命名为“1965 Untitled-227.jpg”
我通过 PowerShell 找到了这个解决方案:
dir | rename-item -NewName {$_.name -replace "replaceME","MyNewTxt"}
这将重命名当前文件夹中所有文件的部分内容。