我有一個批處理腳本,可將來自不同源的50個文件複製到不同的目標。 現在,我有50行:設計批量腳本,用於執行大量副本
xcopy "source" "dest" /y /v
現在,我希望腳本結束時,如果一個副本已經失敗。問題是我不想要100行:
xcopy "source" "dest" /y /v
if not errorlevel 0 goto ERR
在批處理腳本中是否有像「函數」一樣的行爲?
謝謝。
我有一個批處理腳本,可將來自不同源的50個文件複製到不同的目標。 現在,我有50行:設計批量腳本,用於執行大量副本
xcopy "source" "dest" /y /v
現在,我希望腳本結束時,如果一個副本已經失敗。問題是我不想要100行:
xcopy "source" "dest" /y /v
if not errorlevel 0 goto ERR
在批處理腳本中是否有像「函數」一樣的行爲?
謝謝。
這應該與
d:\source\path1\*.*|n:\target\path\
d:\source\path2\*.*|n:\target\path3\
etc
更改的文件格式的工作XCOPY開關,以滿足您的應用程序。代碼很大程度上取自npomaka。
未經測試。
@echo off
for /f "tokens=1,2 delims=|" %%D in (file.txt) do (
xcopy "%%~D" "%%~E" s/h/e/k/f/c || goto :end_for
)
:end_for
謝謝你們兩位。我接受這個答案,因爲那是我將如何做到的。 – Ofer
for %%S in ("destination1|source1"
"destination2|source2"
"and|so on") do (
for /f "tokens=1,2 delims=|" %%D in ("%%~S") do (
xcopy "%%~D" "%%~E" /y /v || goto :end_for
)
)
:end_for
但是,你需要在第一FOR
設置與源目的地一個這樣的映射|(?你已經擁有了所有xopy operations
蝙蝠)「DESTINATION1來源1」
意志的事情更好的解決方案
如果你已經是一個.BAT
所有來源 - >目的地,你也可以嘗試:
for /f usebackq^ tokens^=1^,3^ delims^=^" %%S in ("your.bat") do (
xcopy "%%~S" "%%~T" /y /v || goto :end_for
)
:end_for
.您也可以用/R:0
查詢robocopy
。我認爲robocopy在你的情況下會更有用。
爲什麼你有50行?在可以用作掩碼的文件中是否有一些常見的東西?
下面的批處理文件提供了這兩個功能:
。
@echo off
setlocal EnableDelayedExpansion
for /F "delims=:" %%a in ('findstr /N "^:FileList" "%~F0"') do set n=%%a
for /F "delims=" %%a in ('more +%n% "%~F0"') do (
set source=
for %%b in (%%a) do (
if not defined source (set source=%%b) else set dest=%%b
)
xcopy !source! !dest! /y /v || goto end_for
)
:end_for
goto :EOF
:FileList
source dest
"\long\path\source number two" "\second dest folder"
如果列表中的名稱包含通配符,則此解決方案不起作用。
是批次是否有使用功能的規定 – Arun