将PowerShell foreach循环转换为/ f循环的批处理文件[关闭]

问题描述 投票:-2回答:1

需要将其从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
windows powershell batch-file command-line cmd
1个回答
1
投票
@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%
© www.soinside.com 2019 - 2024. All rights reserved.