我需要用批处理文件做一些事情......
我需要将文件夹复制到另一个文件夹,但是......
如果新文件夹存在,我需要验证新文件夹中是否存在文件,然后我需要在此文件末尾用«.old»重命名该文件,然后才能复制新文件。 我有很好的Java,PHP等编程经验,但不是批处理文件......
我使用java / php的语法来解释我的问题......
set folderOrigin=d:\test1
set folderFinal=d:\test5
if EXIST %folderFinal% (
for (fileOrigin : folderOrigin){
variableNamefileOrigin = fileOrigin
for (fileFinal : folderFinal){
variableNamefileFinal = fileFinal
if (variableNamefileOrigin == variableNamefileFinal){
newvariable = variableNamefileFinal + ".old"
ren variableNamefileFinal newvariable
xcopy /s /q %folderOrigin%+%variableNamefileOrigin%
%folderFinal%+%variableNamefileFinal%
}
}
}
) else (
xcopy /s /q %dossierOrigine% %dossierDestinataire%
)
pause
大家好!
答案 0 :(得分:0)
假设源目录("文件夹"是GUI中的工件;文件系统中的结构是"目录")是%sourceFolder%
,目标目录是{ {1}};并且还假设您只需要复制文件(而不是整个子树):
要循环浏览%finalFolder%
中的文件,请使用%sourceFolder%
循环:
for
在子例程for %%f in ("%sourceFolder%\*") do call :copyOneFile "%%~f"
exit /b
中,您将当前文件设为:copyOneFile
。要检查%1
中是否存在%finalFolder%
,请使用if exist
,如果是,请重命名,但在检查.old
文件是否已存在之前不要重命名:
:copyOneFile
if exist "%finalFolder%\%~nx1" (
if exist "%finalFolder\%~n1.old" del "%finalFolder\%~n1.old"
ren "%finalFolder\%~nx1" "%~n1.old"
)
现在您可以将文件从源文件夹复制到目标文件夹:
copy "%~1" "%finalFolder%
要了解构造%~nx1
等,请使用for /?
。注意,ren
的第二个参数必须只包含文件名,不允许使用路径。
如果您需要复制整个子树,那么:
复制文件后,使用for /d
重做以获取目录。
使用适当的命令代替del
和copy
。