如何批量将文件复制到多个子目录中?

3
我有一个名为“案件文件”的目录,其中有许多标记为:
被告人1
被告人x
被告人88
被告人!!
等等...
(顺便说一下,这些文件夹是被告人的名称,它们实际上并没有标记为“被告人”)
在每个被告人文件夹中都有一个名为“答辩”的目录。是否有办法将filexxxx.pdf复制到每个被告人的答辩文件夹中?如果可能的话,最好只需运行一个简单的.bat文件。

文件xxxx.pdf对于每个被告人都不同吗? - acfrancis
返回翻译后的文本:无论如何,filexxxx.pdf都将是相同的,但我忘记提到的一个条件是,filexxxx.pdf可能已经在Pleadings文件夹中,这种情况下它可以跳过或覆盖它。 - malfy
3个回答

4
这应该将pdf文件复制到c:\case files下每个名为pleadings的文件夹中。
@echo off
for /d /r "c:\case files" %%a in (*)  do (
   if /i "%%~nxa"=="pleadings" copy /y "c:\folder\file.pdf" "%%a"
)
pause

2
   @echo off
   cd /d "c:\case files" 
   for /r %%d in (~)  do (
     echo %%d | find /i  "\Pleadings\~" >nul 2>&1 && copy /y "c:\filexxxx.pdf" "%%~dpd\"
    )

哇!谢谢您的快速回复!我完全忘记了一个条件,一些被告答辩文件夹可能已经包含了filexxxx.pdf文件,在这种情况下,它可以跳过或覆盖它,两种方式都可以。在这种情况下,这个脚本还能正常工作吗? - malfy
这将覆盖文件。否则,将在每次复制时提示。要跳过检查,请使用“xcopy”选项。并检查我的编辑。FINDSTR不能设置正确的errorlevel,但与FIND一起使用效果很好。 - npocmaka
实际上,脚本在正确的文件夹(案件文件)中运行循环,但是它没有将filexxxx.pdf复制到每个被告/诉状文件夹中,而是在每个文件夹中创建了一个名为“〜”的文件。 - malfy
1
你可以在复制命令(行末)中将“"%%d"”更改为“"%%dpd"”,然后它应该可以工作了。如果诉讼目录中的任何文件夹名称以“”开头,则该文件夹也会获得PDF文件的副本。 - foxidrive
经进一步检查,''文件确实是filexxxx.pdf文件,只是被重命名为''并且没有扩展名。 - malfy

1

在Case Files目录中尝试以下操作:

FOR /F "usebackq delims==" %i IN (`dir /s /b Pleadings`) do copy /y filexxxx.pdf %i

但是请检查我的评论,因为我有一种感觉那不完全是你要寻找的。


如果将分隔符设置为=,当文件名中包含=时,它将中断。分隔符应该被设置为空,即... delims="" - foxidrive
哈,说得好。我已经使用那段代码多年了,因为每次都是从文档(“for /?”)中复制/粘贴它,而没有意识到示例是针对环境变量的。我想我从来没有遇到过文件名中带有“=”的文件。 - acfrancis

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