我在MS Dos上有一个问题有点傻,基本上我做的是以下内容:
假设我们位于C:\ BATCH ... 将作为参数传递的目录C:\ BATCH中的任意数量的文件复制到目录中 j:\文本。检测:
我已经尝试但不知道放置参数的部分。也尝试将变量的值等于参数,但我认为它不能。
我离开了我的所作所为,但我已经使用了参数。
@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
答案 0 :(得分:0)
参数传递为%1
,%2
等。因此,如果您致电
YourScript.bat "foo.txt" "bar.txt"
,然后变量%1
将包含"foo.txt"
,而%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种或更多类型的错误,你会感谢你自己。