【问题标题】:How to split delimited text in windows batch?如何在 Windows 批处理中拆分分隔文本?
【发布时间】:2011-01-31 11:35:55
【问题描述】:

我有一个带有外部配置文件的批处理文件。假设我需要删除配置文件中指定为单行分隔列表的文件。文件可能如下所示:

[config.cfg]
*.pdb;*.config

[batch.bat]
...
for /f "tokens=* delims=;" %%b in (%DATA_10%) do (
CALL DEL "%%b%"
)
...

批处理代码应该遍历文件列表并删除它们。

如果我有另一个外部文件分配给 %DATA_10% 变量,其中包含要每行删除一个的文件列表,那么它就完美了。但是,我需要的是从 config.cfg 中提取的文件,如您在上面看到的(全部在一行上),否则我的批处理中需要太多的配置文件。

有解决方案的想法吗?

【问题讨论】:

    标签: batch-file for-loop dos text-processing


    【解决方案1】:

    如果 config.cfg 只包含一行数据,您可以使用

    set /p DATA_10= < config.cfg
    

    但是你的 FOR /F 循环每行只扩展一次,所以它不能以这种方式工作。 你可以改成

    FOR %%a in (%DATA_10%) do (call del "%%b")
    

    但您应该确保不要使用 * 或 ?,因为它们在“正常”for 循环中被解释为通配符

    【讨论】:

    • 太棒了,它确实可以使用您的普通 for 循环而无需指定分隔符。我现在也不需要使用通配符,因为删除也适用于文件夹。感谢您指出正确的方向..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多