2010-09-17 91 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