批量复制和重命名文件

3

我需要从网络上复制一些目录到我的计算机,并从复制的文件夹中删除扩展名为.nary的文件; 因此,文件myFile.doc.nary将变为myFile.doc。 我有以下Windows批处理文件,但不知道如何将重命名限制为如果批处理文件从c:\ 运行,则两个文件夹:

``` @echo off set "source=\\network\path" set "target=C:\backup" robocopy "%source%" "%target%" /MIR /XF *.nary for /f "delims=" %%a in ('dir /b /s "%target%\*.nary"') do ( ren "%%a" "%%~na" ) ```
xcopy /s \\some_server\MYFOLDER1 c:\MYFOLDER1\
xcopy /s \\some_server\MYFOLDER2 c:\MYFOLDER2\

for /r %%x in (*.nary) do (
    ren "%%x" *.
    )
pause

如何将重命名限制为 c:\ 上的这两个文件夹?此外,如果这些文件夹已经存在于我的计算机的 c:\ 上,是否可以不运行复制?谢谢。

1个回答

2

如何将重命名限制在c:\上的这两个文件夹中?

只需使用for /d循环遍历目录即可。

修改后的批处理文件:

@echo off
xcopy /s \\some_server\MYFOLDER1 c:\MYFOLDER1\
xcopy /s \\some_server\MYFOLDER2 c:\MYFOLDER2\
for /d %%x in (C:\MYFOLDER1 c:\MYFOLDER2) do (
  ren "%%x\*.nary" *.
  )
pause

还有,如果文件夹已经存在于 c:\ 中,是否可以不运行复制操作?

在运行 xcopy 命令之前,先测试文件夹是否已经存在:

修改后的批处理文件如下:

@echo off
if not exist C:\MYFOLDER1 echo xcopy /s \\some_server\MYFOLDER1 c:\MYFOLDER1\
if not exist C:\MYFOLDER2 echo xcopy /s \\some_server\MYFOLDER2 c:\MYFOLDER2\
for /d %%x in (C:\MYFOLDER1 c:\MYFOLDER2) do (
  ren "%%x\*.nary" *.
  )
pause

更多阅读

  • Windows CMD命令行A-Z索引 - 有关Windows cmd命令行的所有事项的优秀参考。
  • for /d - 在多个目录/文件夹上有条件地执行命令。
  • if - 有条件地执行命令。
  • ren - 重命名一个或多个文件。
  • xcopy - 将文件和/或目录树复制到另一个文件夹。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接