1

我在 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
4

1 回答 1

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

我稍后可能会在更新的答案中解决关于字符串、引号和空格的其他一些更改,但上面的更改应该可以满足您的要求。

顺便说一句:第 2 行和第 8 行在脚本中没有做任何有用的事情。它们可以被移除。

于 2013-01-21T03:38:28.703 回答