2010-09-17 48 views
12

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

如果我已经有此.txt文件内

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

那么有没有一种方式来创建一个批处理文件,将在年底卸下巴纽只有这表明一个新的.txt文件

2005060 
2005070 
2005080 
2005090 

感谢您的任何帮助! :)

+0

什么平台?视窗?如果是这样,你是否安装了PowerShell? – 2010-09-17 05:58:48

+0

我在Windows平台 – steven 2010-09-17 06:26:14

回答

19

你可以做到这一点按下面的命令脚本:

@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 

请记住它将不会输出空行(尽管它做空行的行)。

根据输入文件允许的内容,这可能不是问题。如果这是一个问题,我的建议是让你的手CygWinGnuWin32(或Powershell,如果你在你的平台上),并使用一些真正的脚本语言。

+0

只是试过它没有问题,它运行。再次感谢!!! – steven 2010-09-17 06:46:43

+0

@steven,那么你应该接受答案。 – 2010-09-17 16:18:08

1

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

@echo off 

    echo. > testprog.txt 

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

    start testprog.txt 
7

这对我来说最好的工作:

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

credit

+0

非常感谢。奇迹般有效。 – knkarthick24 2015-01-13 05:11:43