我找到了一些非常好的例子,但不是我需要的。我的目标是拥有一个批处理脚本,我可以每晚运行,用一个位于驱动器根目录的文件的新副本替换文件的所有实例(在我的情况下为timthumb.php)。
这是我到目前为止所拥有的......
for /f %%a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\timthumb.php %%a
这和我一样接近,它将替换文件夹中的timthumb.php实例,例如C:\ thumb_test \ test1 \ timthumb.php,但不会更深入到目录中。例如,C:\ thumb_test \ test2 \ level2 \ timthumb.php未被替换。此外,在替换文件之后,它看起来像是在尝试读取实际的timthumb.php并输出一堆错误,例如......
C:\thumb_test>by Tim McDaniels and Darren Hoyt
'by' is not recognized as an internal or external command,
operable program or batch file.
我发现/ R是递归的,但是当我尝试以下时它也不起作用。
for /f %%a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\timthumb.php %%a
这给了我结果: C:\ thumb_test> test.bat的 %a在此时出乎意料。
C:\thumb_test>for /r /f %a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\
timthumb.php %a
我的DOS知识有限,所以我希望其中一位专家有一个想法。
由于 -SAM
对于使用timthumb的人来说,你应该看看http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/,并确保你的网站是安全的。
答案 0 :(得分:3)
for /R c:\thumb_test %%a in (timthumb.php) do if exist "%%a" copy /y c:\thumb_test\timthumb.php "%%a"
或者,使用更可靠的robocopy而不是copy:
for /R c:\thumb_test %%a in (.) do robocopy /xl c:\thumb_test "%%a" timthumb.php