【问题标题】:Running all files in directory via batch file with appended text on each line通过批处理文件运行目录中的所有文件,每行附加文本
【发布时间】:2013-02-25 17:47:51
【问题描述】:

我想创建一个批处理文件

A) 读取当前目录下的所有文件

B) 将当前目录中的所有文件写入另一个批处理文件

C) 将文本附加到每一行(我想附加“/Z /U”(分别用于安静和 norestart)

到目前为止我所拥有的:

批处理文件

@echo on

@setlocal enableextensions
@cd /d "%~dp0"

dir /b > installALLTHETHINGS.bat

echo /Z /U >> installALLTHETHINGS.bat

批处理文件的输出在这里:

输出

exe1.exe
bat1.bat
installme.msi
bat2.bat
bat3.bat
file list.bat
/Z /U 

我确信我可以弄清楚如何在不创建新行的情况下在最后一行获取“/Z /U”,但是有没有办法在目录中的每个文件之后写“/Z /U” ?

【问题讨论】:

    标签: windows command-line console-application


    【解决方案1】:

    我不知道你为什么要这样做,但使用 FOR 循环很简单。

    @echo off
    cd /d "%~dp0"
    >installAllTheThings.bat (
      for %%F in (*) do if "%%F" neq "installAllTheThings.bat" if "%%F" neq "%~nx0" echo "%%F" /Z /U
    )
    

    【讨论】:

    • 感谢 dbenham 的回复!不幸的是,当我运行它时,它似乎没有做任何事情 - 我已经尝试过使用和不使用预先存在的“installAllTheThings.bat” - 我会尝试解决更多问题,但 /z /u 没有出现在每一行代码之后:(也就是说,这对我来说是新的,如果我能让它工作,我会更新它。哦,我想这样做的原因是在补丁出现时分批安装 -我无法自动安装它们。
    • @user2029748 - 呃,当我写这个答案时,我不知道我的想法在哪里。我刚刚修复了 3 个错误。使用修改后的代码再试一次 - 它现在应该可以工作了。
    • 我意识到这不是必需的,但是有没有办法向我解释为什么如果我将此文件命名为 runme.bat 并执行它,它不会选择文件名 runme.bat在 installAllTheThings.bat 文件中?这是一件好事,我只是没有在代码中看到发生这种情况。谢谢!
    • @user2029748 - 第一个 IF 阻止包含 installAllTheThings.bat。第二个 IF 防止包含“runme.bat”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    相关资源
    最近更新 更多