我在Windows Server 2008 R2上。
我的脚本验证我输入的文件是否存在,然后验证我要移动的文件在recycleBin.dir
中是否已存在。还可以选择是否覆盖文件;如果选择“是”,脚本会移动它们。
我的问题是我需要能够输入多个文件,而不仅仅是一个。
我做了什么:
@echo off
set param = "%*"
set corb_path=c:\corbeille.dir
set rep_courant = %cd%
:debut
if "%*" == "" goto error
goto path
goto end
:path
cd %corb_path%|| del %corb_path%
if not exist %corb_path%/nul mkdir %corb_path%
cd c:\
if exist %rep_courant%%* goto something
) else (
goto end )
:something
if exist %corb_path%\"%*" goto choice
) else (
goto 1 )
:choice
choice /t 10 /d n /c on /cs /m "fichier "(%*)" file exist in corbeille.dir"
if errorlevel 2 goto 2
if errorlevel 1 goto 1
:1
move %* %corb_path%
shift
goto debut
:2
echo the file has beed deleted
goto end
:error
echo "You need to input something"
:end
答案 0 :(得分:1)
您希望脚本处理作为命令行参数传入的每个文件吗?
从我看到的蝙蝠来看,你需要换几行。主要问题是使用%*
。这将立即引入所有参数而不是一次引入一个参数。您需要使用%1
。
更改第6行:
if "%1" == "" goto error
更改第13行:
if exist %rep_courant%%1 goto something
更改第17行:
if exist %corb_path%\"%1" goto choice
更改第21行:
choice /t 10 /d n /c on /cs /m "fichier "(%1)" file exist in corbeille.dir"
更改第25行:
move %1 %corb_path%
由于%1
命令,shift
将始终拥有下一个项目。
我还可能会在更新的答案中解决字符串,引号和空格的其他更改,但上述更改应该按照您的要求进行。
BTW:第2行和第8行在脚本中没有任何用处。它们可以被移除。