Пакетное удаление персонажа из строки - PullRequest
14 голосов
/ 17 сентября 2010

это может показаться базовым, но есть ли способ создать пакет для удаления символа из строки из текстового файла.?

Если у меня уже есть это в файле .txt

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

, есть ли способ создать пакетный файл, который в конце удалит файл .png, чтобы показать только это вновый .txt файл

2005060  
2005070  
2005080  
2005090

Спасибо за любую помощь в этом!:)

Ответы [ 3 ]

21 голосов
/ 17 сентября 2010

Вы можете сделать это согласно следующему командному сценарию:

@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, если он у вас есть на платформе) и использовать некоторые настоящие языки сценариев.

8 голосов
/ 22 ноября 2012

Это сработало лучше всего для меня:

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

кредит

1 голос
/ 17 сентября 2010

Если вы пытаетесь прочитать каталог файлов .png и вывести список без расширений?Попробуйте это:

    @echo off

    echo. > testprog.txt

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

    start testprog.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...