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"
然后只需将该文件作为批处理脚本运行即可。