批量回收站脚本

时间:2013-01-19 19:08:05

标签: file input batch-file

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

1 个答案:

答案 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行在脚本中没有任何用处。它们可以被移除。