如何在带有批处理文件的文件夹中循环
How to loop in a folder with batch file
我需要用批处理文件做一些事情....
我需要将一个文件夹复制到另一个文件夹,但是...
如果新文件夹存在,我需要验证新文件夹中的文件是否存在,然后我需要在复制新文件之前将文件末尾的“.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
谢谢大家!
假设源目录("folders" 是 GUI 中的工件;文件系统中的结构是 "directories")是 %sourceFolder%
,目标目录是 %finalFolder%
;并假设您只需要复制 files (不是整个子树):
要循环遍历 %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
。
我需要用批处理文件做一些事情....
我需要将一个文件夹复制到另一个文件夹,但是...
如果新文件夹存在,我需要验证新文件夹中的文件是否存在,然后我需要在复制新文件之前将文件末尾的“.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
谢谢大家!
假设源目录("folders" 是 GUI 中的工件;文件系统中的结构是 "directories")是 %sourceFolder%
,目标目录是 %finalFolder%
;并假设您只需要复制 files (不是整个子树):
要循环遍历
%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
。