sdelete 在批处理文件中使用时抛出错误

sdelete throwing error when used in batch file

我需要一个批处理文件,它可以从文本文件中提取文件名和路径;然后将文件复制到外部驱动器,然后安全地删除文件。除 sdelete 外,此批处理文件的所有内容均有效。它抛出一个错误,明显表明路径和文件名没有用引号引起来。但是,正如您在批处理文件中看到的那样。完全相同的文件使用 del 而不是 sdelete 可以完美运行。有什么想法吗?

@echo off

set Source=D:\files.txt
set Destination=D:\Reclamation

SetLocal EnableDelayedExpansion

for /f "tokens=* delims=" %%a in ('type "%Source%"') do (
 IF not exist "%Destination%%%~pa" md "%Destination%%%~pa"
 xcopy /shrkvy "%%a" "%Destination%%%~pa"
 IF NOT !ErrorLevel! EQU 0 (echo "%%a">>"Errors.txt") else (sdelete64 -q -z "%%a")
)

来自微软的文档:Sdelete documentation

Usage: sdelete [-p passes] [-r] [-s] [-q] <file or directory> [...]
sdelete [-p passes] [-z|-c [percent free]] <drive letter [...]

所以 -q 没有记录但似乎与 -z

不兼容

-z 需要驱动器 LETTER,而不是目标 file/directory.