如何在不同的子文件夹中将所有文件名重命名为相同?

时间:2018-04-24 14:39:59

标签: batch-file

如何将所有文件名从不同的文件夹更改为:

C:\Workspace\1\a.jpg
C:\Workspace\2\ab.doc
C:\Workspace\3\abc.jpg

C:\Workspace\1\scan.jpg
C:\Workspace\2\scan.doc
C:\Workspace\3\scan.jpg

2 个答案:

答案 0 :(得分:0)

以下是此任务的批处理文件:

@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中的第一个 * .jpg文件重命名为scan.jpg后,批处理文件会搜索第一个非隐藏* .doc目录C:\Workspace\2中的文件并将其重命名为scan.doc。独立于此重命名操作的结果,批处理文件继续在下一个目录C:\Workspace\3中重命名文件,在该目录上再次只有第一个非隐藏* .jpg文件重命名为scan.jpg而不进行评估重命名操作的结果。

最后,批处理文件删除在顶部定义的环境变量并退出。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • echo /?
  • for /?
  • goto /?
  • if /?
  • ren /?
  • set /?

答案 1 :(得分:0)

get-childItem -recurse | Where {$_.extension -eq ".jpg"} | rename-item -NewName { "scan.jpg" }

我用这种方法来解决这个问题。希望它的工作也适用于其他人。我正在使用powershell。