Batch file 如何将不同子文件夹中的所有文件名重命名为相同?
如何将不同文件夹中的所有文件名更改为相同,如:Batch file 如何将不同子文件夹中的所有文件名重命名为相同?,batch-file,Batch File,如何将不同文件夹中的所有文件名更改为相同,如: C:\Workspace\1\a.jpg C:\Workspace\2\ab.doc C:\Workspace\3\abc.jpg 到 以下是此任务的批处理文件: @echo off set "SourceFolder=C:\Workspace" if not exist "%SourceFolder%\1\*.jpg" goto EndBatch for %%I in ("%SourceFolder%\1\*.jpg") do ( r
C:\Workspace\1\a.jpg
C:\Workspace\2\ab.doc
C:\Workspace\3\abc.jpg
到
以下是此任务的批处理文件:
@echo off
set "SourceFolder=C:\Workspace"
if not exist "%SourceFolder%\1\*.jpg" goto EndBatch
for %%I in ("%SourceFolder%\1\*.jpg") do (
ren "%%I" "scan.jpg" 2>nul
if errorlevel 1 goto EndBatch
goto RenameDOC
)
:RenameDOC
for %%I in ("%SourceFolder%\2\*.doc") do (
ren "%%I" "scan.doc" 2>nul
goto RenameJPG
)
:RenameJPG
for %%I in ("%SourceFolder%\3\*.jpg") do (
ren "%%I" "scan.jpg" 2>nul
goto EndBatch
)
:EndBatch
set "SourceFolder=
如果批处理文件在目录C:\Workspace\1
中找不到非隐藏的*.jpg文件,则批处理文件不会执行任何操作
它将目录C:\Workspace\1
中找到的*.jpg文件重命名为scan.jpg
。如果由于缺少此操作的NTFS或文件访问权限,或者此目录中已有文件scan.jpg
,而导致此操作不成功,则批处理文件不会执行其他操作
成功将目录C:\Workspace\1
中的first*.jpg文件重命名为scan.jpg
后,批处理文件接下来搜索目录C:\Workspace\2
中的first非隐藏的*.doc文件,并将其重命名为scan.doc
。独立于此重命名操作的结果,批处理文件将继续在下一个目录C:\Workspace\3
中重命名文件,在该目录上,仅第一个非隐藏*。jpg文件将重命名为scan.jpg
,而不评估此重命名操作的结果
最后,批处理文件删除在顶部定义的环境变量并退出
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
echo/?
获取/?
goto/?
如果/?
ren/?
设置/?
我用这种方法来解决这件事。希望它的工作也能给其他人。我正在使用powershell。如果
C:\Workspace\2
同时包含ab.doc和C.jpg,会发生什么情况?另外,这样做的用例是什么?为什么?@lit如果同时包含这两个文件,它也将更改为scan.doc和scan.jpg。这是为了使所有文件都相同,因为有些文件的名称不同,很难在每个文件夹中跟踪。@SyafiqLatif-对不起,我给出了错误的示例。如果C:\Workspace\2
同时包含a.jpg和b.jpg怎么办?
@echo off
set "SourceFolder=C:\Workspace"
if not exist "%SourceFolder%\1\*.jpg" goto EndBatch
for %%I in ("%SourceFolder%\1\*.jpg") do (
ren "%%I" "scan.jpg" 2>nul
if errorlevel 1 goto EndBatch
goto RenameDOC
)
:RenameDOC
for %%I in ("%SourceFolder%\2\*.doc") do (
ren "%%I" "scan.doc" 2>nul
goto RenameJPG
)
:RenameJPG
for %%I in ("%SourceFolder%\3\*.jpg") do (
ren "%%I" "scan.jpg" 2>nul
goto EndBatch
)
:EndBatch
set "SourceFolder=
get-childItem -recurse | Where {$_.extension -eq ".jpg"} | rename-item -NewName { "scan.jpg" }