【问题标题】:Batch To Remove Character From A String批量从字符串中删除字符
【发布时间】:2010-09-17 05:57:41
【问题描述】:

这可能看起来很基本,但是有没有办法创建一个批处理来从 txt 文件中的字符串中删除字符。 ?

如果我已经在 .txt 文件中有这个

2005060.png  
2005070.png  
2005080.png  
2005090.png

所以有没有办法创建一个批处理文件,该文件将删除最后的 .png 以仅在新的 .txt 文件中显示此文件

2005060  
2005070  
2005080  
2005090

感谢您对此的任何帮助! :)

【问题讨论】:

  • 什么平台?视窗?如果是这样,您是否安装了 PowerShell?

标签: batch-file


【解决方案1】:

您可以按照以下命令脚本进行操作:

@setlocal enableextensions enabledelayedexpansion
@echo off
set variable=2005060.png
echo !variable!
if "x!variable:~-4!"=="x.png" (
    set variable=!variable:~0,-4!
)
echo !variable!
endlocal

这个输出:

2005060.png
2005060

魔法线当然是:

set variable=!variable:~0,-4!

删除最后四个字符。


如果您有一个文件 testprog.in 并带有它的行,例如:

2005060.png
1 2 3 4 5      leave this line alone.
2005070.png
2005080.png
2005090.png

您可以稍作修改:

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=" %%a in (testprog.in) do (
    set variable=%%a
    if "x!variable:~-4!"=="x.png" (
        set variable=!variable:~0,-4!
    )
    echo.!variable!
)
endlocal

哪个输出:

2005060
1 2 3 4 5      leave this line alone.
2005070
2005080
2005090

请记住,它不会输出空行(尽管它会输出带有空格的行)。

这可能不是问题,具体取决于您的输入文件中允许的内容。如果有问题,我的建议是使用CygWin 或GnuWin32(或Powershell,如果你的平台上有它)并使用一些真正的脚本语言。

【讨论】:

    【解决方案2】:

    这对我来说效果最好:

    @echo off
    for %%x in (*.png) do  echo %%~nx
    

    credit

    【讨论】:

    • 非常感谢。像魅力一样工作。
    【解决方案3】:

    如果您尝试读取 .png 文件目录并输出不带扩展名的列表? 试试这个:

        @echo off
    
        echo. > testprog.txt
    
        for /R "C:\Users\%USERNAME%\Documents" %%f in (*.png) do (
            echo %%~nf >> testprog.txt
            )
    
        start testprog.txt
    

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 2016-10-02
      • 2016-07-26
      • 2013-09-18
      • 2011-11-22
      相关资源
      最近更新 更多