使用 Windows 批处理 .bat 脚本批处理标准输入行

使用 Windows 批处理 .bat 脚本批处理标准输入行

delete.bat我有一个包含以下内容的Windows 批处理脚本:

@echo off
takeown.exe /A /R /F %1
icacls %1 /grant Administrators:(OI)(CI)F /C /T /Q /L
rmdir /S /Q %1
echo %cd%\%1 >> "C:\delete.txt"

现在我想将一个 txt 文件传递​​给该脚本,delete.bat < C:\delete.txt并且该脚本必须处理 stdin 类参数的每一行%1

我怎样才能制作一个while(!feof(stdin))var line = fgets(stdin)然后用%1替换%line%

答案1

您需要使用 FOR /F 命令, 被形容为 :

循环命令:针对一组文件 - 有条件地对每个项目执行命令。

示例:将文本文件中列出的文件复制到新目标:

FOR /f "delims=" %%G in (files.txt) DO copy "\\source\folder\%%G" "H:\destination\%%G" 

答案2

不要生成文件列表,而是生成批处理命令列表:

echo del "%cd%\%~1" >> "C:\delete.bat"

然后只需将该文件作为批处理脚本运行即可。

相关内容