需要将其从powershell转换为批处理
$filenames = Get-Content -Path "C:\filenames.txt"
$deletePath = "C:\DeletePath"
foreach ($file in $filenames)
{
Remove-Item -Path "$deletePath\$file.*"
}
谢谢你的帮助
我的代码
set /p filenames=<"C:\filenames.txt"
set deletePath="C:\DeletePath\"
for /f %%b in (%filenames%) do del %deletePath%\%%b
@echo off
setlocal
set "deletePath=C:\DeletePath"
for /f "usebackq delims=" %%i in ("C:\filenames.txt") do echo del "%deletePath%\%%i"
删除echo
以执行实际删除。
说明:
"..."
(set "deletePath=C:\DeletePath"
)中包含名称和值。
相比之下,如果你只引用该值,则"
成为该值的一部分(set deletePath="C:\DeletePath"
)
一般来说,请参阅help set
,尽管那里没有解释引用问题。for /f
可用于循环文件中的行,在迭代变量("..."
)指定选项之前使用双引号字符串(%%i
)(请参阅help for
):
在这种情况下,usebackq
允许在输入文件路径周围使用"..."
,而不会将该文件路径解释为字符串。
delims=
确保从输入文件中完整读取每一行,即使它包含空格。
相比之下,set /p filenames=<"C:\filenames.txt"
只会将指定文件的第一行读入变量%filenames%
。