DOS批处理脚本 – recursionreplace文件实例与主文件(timthumb利用防止)

我发现了一些非常好的例子,但不是我所需要的。 我的目标是有一个批处理脚本,我可以每晚运行一个文件(在我的例子timthumb.php)的所有实例replace位于驱动器根目录的文件的全新副本。

这是我到目前为止…

for /f %%a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\timthumb.php %%a 

这与我来的很接近,它将replace文件夹(如C:\ thumb_test \ test1 \ timthumb.php)中timthumb.php的实例,但不会深入目录。 例如C:\ thumb_test \ test2 \ level2 \ timthumb.php没有被replace。 此外,replace文件后,它看起来像试图读取实际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. 

我发现/ Rrecursion,但是当我尝试以下它也不起作用。

 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

PS对于任何使用timthumb的人,你应该看看http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/ ,并确保你的网站是安全的。

 for /R c:\thumb_test %%a in (timthumb.php) do if exist "%%a" copy /yc:\thumb_test\timthumb.php "%%a" 

或者,使用更可靠的robocopy代替copy:

 for /R c:\thumb_test %%a in (.) do robocopy /xl c:\thumb_test "%%a" timthumb.php