Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从定义的驱动器中删除数据的批处理脚本_Batch File - Fatal编程技术网

Batch file 从定义的驱动器中删除数据的批处理脚本

Batch file 从定义的驱动器中删除数据的批处理脚本,batch-file,Batch File,我在大学里有个任务,要写一个脚本,从选定的usb闪存驱动器中删除文件。技巧部分是驱动器必须通过在脚本的名称后面添加一个字母来定义,比如script.bat D下面是我在前面的回答中提供的示例的一个未经测试的修改: @回音 SetLocal EnableExtensions DisableDelayedExpansion 集合_I=%~1 如果未定义_iecho=未提供输入参数。 Echo=退出…&超时3/NoBreak>Nul&Exit/B Mountvol | Find/I%\u I:~,1%

我在大学里有个任务,要写一个脚本,从选定的usb闪存驱动器中删除文件。技巧部分是驱动器必须通过在脚本的名称后面添加一个字母来定义,比如script.bat D下面是我在前面的回答中提供的示例的一个未经测试的修改:

@回音 SetLocal EnableExtensions DisableDelayedExpansion 集合_I=%~1 如果未定义_iecho=未提供输入参数。 Echo=退出…&超时3/NoBreak>Nul&Exit/B Mountvol | Find/I%\u I:~,1%:\>Nul&Set\u I=%\u I:~,1%\124; Echo=提供的参数无效。 Echo=退出…&超时3/NoBreak>Nul&Exit/B 对于/F Skip=2令牌=*%%%A,在“WMIC DiskDrive中,其中InterfaceType^=USB^ Assoc/AssocClass:Win32_DiskDriveToDiskPartition 2^>Nul'Do 对于“%%A”中的/F UseBackQ^Delims^=^^^^^令牌^=2%%B 对于/F Delims^=^:^Tokens^=6%%C In “WMIC路径Win32_LogicalDiskToPartition^|查找%%B”Do 如果/I%%C==%\U I%转到:任务 Echo=%\u I%:不是已连接的USB驱动器。 >Nul超时5 退出/B :任务 选项/C YN/T 15/D N/M是否要删除%u I%中的所有文件: 如果错误级别2退出/B CD/D%\U I%: 删除/A/F/Q* RD/S/Q*>Nul 2>&1
解析wmic logicaldisk列表摘要的固定宽度输出比使用具有预定列的csv变量更困难。wmic logicaldisk,其中drivetype=2获取driveletter/格式:csv请参阅@LotPings wmic logicaldisk,其中drivetype=2获取driveletter并非在所有情况下都有效。我有一个外部USB驱动器,它返回的驱动器类型为3。@DavidPost将在上查看示例代码。值为2的DriveType是可移动驱动器,例如USB闪存棒。值为3的驱动器类型是通过USB连接的硬盘。@Mofi。我知道。这是模棱两可的。它可能是通过USB连接的硬盘,但仍然是可移动的。我可以安全地将其上的硬件弹出并拔出,就像使用U盘一样。@LotPings wmic logicaldisk,其中drivetype=2获取driveletter/format:csv在Windows 7上不起作用。结果是由于DriveLetter而不是DriveType以及无效的XSL格式或文件名导致错误消息查询无效。因为/Format:csv在Windows 7上不可用。因此,我使用wmic.exe LOGICALDISK获取DeviceID、DriveType并解析UTF-16 LE编码的输出,它可以在Windows XP/7/8/10上运行。这太完美了!我需要什么就做什么。我不知道怎样才能写出这样的东西。。我甚至没有学习编程。多谢各位
    @echo off
set zew=""
for /f "tokens=1-5" %%a in (
 'wmic logicaldisk list brief'
) do if %%b Equ 2 if %%d gtr 0 Set zew=!zew! %%a

if %1=="" goto :BLAD
setlocal enabledelayedexpansion
Set USB=%1
if %1 NEQ %zew% goto :BLAD
if not exist %USB%:\ goto :BLAD
if %USB% EQU C goto BLAD
cd /D %USB%:
del * /S /F /Q
rmdir /S /Q %USB%:
echo Files deleted
goto :END

:BLAD
echo The was an error
goto :END

:END
echo Success
pause