【问题标题】:Batch Script - Loop through text file and set each line as variable and run script then repeat for next line批处理脚本 - 遍历文本文件并将每一行设置为变量并运行脚本,然后重复下一行
【发布时间】:2020-07-23 08:27:51
【问题描述】:

我有这个我试图创建的脚本 -

它没有像我需要的那样循环。似乎只抓取文件的最后一行?

我有一个包含多个计算机名称的文本文件,每行一个...我需要将第 1 行设置为变量,回显该行,然后运行一行代码,然后将第 2 行设置为变量,回显该行并然后运行代码并继续运行其余代码,并在完成所有行时显示“完成”...

感谢您提供任何帮助。我已经搜索了 Stack Overflow 并找到了类似的问题和答案,但没有一个有效,因为我打算让它们工作......

@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%f in (computernames.txt) do (
  set compname=%%f
    echo !compname!
)
echo %compname%
REG ADD "\\%compname%\HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v "fDenyTSConnections" /t REG_DWORD /d 0 /f

pause

【问题讨论】:

    标签: loops batch-file


    【解决方案1】:

    您的脚本确实会抓取文件中的每一行,但您只会在循环结束时回显结果(因此只有最后一行)。

    首先,在循环内回显%%f 以查看所有计算机名称。 然后,您还必须在循环内移动您的注册表代码。你可以使用%%f

    @Echo off
    for /f "tokens=*" %%f in (computernames.txt) do (
      echo %%f
    REG ADD "\\%%f\HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v "fDenyTSConnections" /t REG_DWORD /d 0 /f
    )
    

    【讨论】:

    • 你不需要分配compname,因为你直接使用%%f,任何你不需要延迟扩展......
    • 谢谢,我现在解决了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多