【问题标题】:DOS command to replace all instances of <filename>.config用于替换 <filename>.config 的所有实例的 DOS 命令
【发布时间】:2009-08-26 23:11:32
【问题描述】:

我有一个特定于我的机器的配置文件的编辑版本。 我在开发文件夹的多个不同目录中有相同的配置文件。 我想在一个 bat 文件中,用我编辑的文件替换这个文件的所有实例。

所以在 pusdo 代码中: 取 C:\edited.config 并复制到 C:\Projects\ /s 找到 original.config 的任何地方

我希望最终文件的名称为 original.config,而不是edited.config

所以我猜我需要某种 FOR、重命名和复制或类似的组合

这在 Powershell 中更容易做到吗?

有人可以帮忙吗? 谢谢

【问题讨论】:

    标签: dos


    【解决方案1】:

    我不久前在 http://jamesewelch.com/2008/05/01/how-to-write-a-dos-batch-file-to-loop-through-files/ 上写了一篇博客

    我认为您的解决方案看起来类似于(以下未经测试,但用于显示一般想法)

    for /f %%a IN ('dir /b *.config') do copy c:\master.config %%a
    

    副本上可能有一个开关来抑制文件覆盖警告,但我不记得开关是什么。这将复制您的 master.config 并覆盖您的本地文件(变量为 %%a)。

    【讨论】:

    • /y 选项抑制提示
    【解决方案2】:

    我对 DOS 批处理文件专家所做的工作感到惊讶。因为我不是他们中的一员,所以我采取了一种对我来说务实的方法。它也可能对你有用。

    1. 获取目标文件夹列表

      C: 光盘\ 目录 original.config /s > original.bat

    2. 在您喜欢的文本编辑器中编辑 original.bat(我喜欢 Notepad++)

    3. 搜索“original.config”并替换为“”(空字符串)

    4. 在每一行的前面插入文本“Xcopy C:\edited.config”

    5. 校对结果以确保它是您想要的。如果您不确定在每行前面放置一个“Echo”以进行试运行。

    6. 运行批处理文件。

    【讨论】:

    • 是的,这些家伙想出的一些魔法令人惊叹。
    【解决方案3】:
    @echo off
    C:
    cd \Projects
    FOR /F "tokens=*" %%G IN ('DIR /B /S original.config') DO xcopy /y c:\edited.config %%G
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-13
      • 2015-06-11
      • 1970-01-01
      • 2011-03-07
      • 2021-08-16
      • 2021-01-02
      • 1970-01-01
      • 2023-01-12
      相关资源
      最近更新 更多