【问题标题】:Parsing filename from text file gives the wrong details从文本文件中解析文件名给出了错误的细节
【发布时间】:2014-01-03 13:01:13
【问题描述】:

请注意,我是脚本新手,所以请保持温柔!

我有一个名为 list.txt 的文本文件,只有一行(用于测试),该行是:

D:\italy\gfm\users\test\avisgfm_1001_1500.txt

我的脚本是:

@echo off
for /f "delims=" %%1 in (list.txt) do (
    echo %%~1
    echo %%~d1
    echo %%~p1
    echo %%~n1
    echo %%~x1
 )

但是脚本的结果是:

´╗┐d:\italy\gfm\users\test\avisgfm_1001_1500.txt C: \PCI\´╗┐d:\italy\gfm\users\test\avisgfm_1001_1500.txt

知道发生了什么吗?我正在通过 Windows 批处理文件执行此操作。

谢谢

【问题讨论】:

    标签: windows parsing loops batch-file filenames


    【解决方案1】:

    元变量应该是一个(区分大小写的)字母。

    数字是指例程的参数。

    for /f "delims=" %%a in (list.txt) do (
     echo %%~a
    

    等等都可以正常工作。

    【讨论】:

      【解决方案2】:

      看来您已经使用 UTF-8 之类的编码保存了 list.txt,文件头部带有字节顺序标记。 BAT 只能处理 ASCII 文本文件。尝试将 list.txt 创建为简单的 ASCII 文本文件。记事本形式的 Windows 可以做到这一点。

      %%1 可以正常工作,但最好使用字母,例如 %%i,就像在规范中一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多