簡體   English   中英

MS DOS-使用參數和SET復制任意數量的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM