[英]MS DOS - Copy any number of files using parameters and SET
我對MS Dos有點傻,基本上我要做的是以下幾點:
假定我們位於C:\\ BATCH ...中,將目錄C:\\ BATCH中作為參數傳遞的任意數量的文件復制到目錄J:\\ TEXTS中。 檢測:
我已經嘗試過,但不知道該放入參數的哪一部分。 還嘗試將變量的值等於參數,但我認為它做不到。
我離開了我所做的事情,但是我使用了參數。
@echo off
if not exist J:\texts\nul md J:\texts
set dir=J:\texts
cls
:continue
set /p file="File to copy (END to finish) "
if %file%==END goto end
if not exist %file% goto error1
cls
echo You will copy the file %file% into directory %dir%
pause
cls
copy %file% %dir% >nul
goto loopback
:loopback
goto continue
:error1
cls
echo The file %file% doesnt exist.
:end
參數以%1
, %2
等形式傳遞。因此,如果您調用
YourScript.bat "foo.txt" "bar.txt"
,則變量%1
將包含"foo.txt"
而變量%1
%2
將包含"bar.txt"
。
要支持可變數量的參數,可以使用shift
命令。 它將所有參數后退一步,因此%2變為%1,%3變為%2,依此類推。
因此,在循環內,您可以將文件移至%1
,然后調用shift
,然后重復進行直到%1
為空。
@echo off
rem Initialization goes here
:start
rem Check if there are files left.
if %1X==X goto done
echo Copying %1
rem Actual copying goes here. Maybe some checking
rem if file exists and stuff like that.
shift
goto start
:done
echo Done.
PS:我在您的腳本中看到標簽“ error1”。 不要害怕使用更具描述性的名稱。 如果您遇到10種或更多類型的錯誤,您將感激不盡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.