CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле

Ответить
Аватара пользователя
nexxie

CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле

Сообщение nexxie »

Добрый день!

Нужна ваша помощь.

Есть текстоый файл(inFile), в нем указаны пути до файлов такого вида

С:\...\filename1.sql: windows-1251

С:\...\filename2.sql: windows-1251

С:\...\filename3.sql: windows-1251

.................................................

С:\...\filenameN.sql: windows-1251



Нужно удалить 14 симоволов, или до .sql . Можно сохранить в этот файл, либо в другой. Я попробовал вот так, но что-то не вышло



Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set ifile=inFile.txt
set tfile=outFile.txt
set find=windows
if exist %tfile% del /Q %tfile%
for/F "tokens=* delims=, " %%a IN (%ifile%) DO ( 
    set line=%%a
    if !line!==%find% ( set line=%line:~0,-14%)
    echo !line!>> %tfile%
	)
Аватара пользователя
Fors1k

Re: CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле

Сообщение Fors1k »

Код:

Код: Выделить всё

param(
    $pathIN  = "D:\inFile.txt",
    $pathOUT = "D:\outFile.txt"
)cls
(gc $pathIN)-replace".{14}$"|
Out-File $pathOUT 
Аватара пользователя
nexxie

Re: CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле

Сообщение nexxie »

nexxie, 5 копеек вставлю, разбавил Ваш код примерами с форума:





Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set ifile=inFile.txt
set tfile=outFile.txt
set sfind=windows
if exist %tfile% del /Q %tfile%
for /F "tokens=* delims=, " %%a IN (%ifile%) DO ( 
echo %%a | findstr.exe /c:!sfind! > nul && set line=%%a && set line=!line:~0,-15! && echo.!line! >> !tfile! 
)
Аватара пользователя
nexxie

Re: CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле

Сообщение nexxie »

Спасибо всем. Я нашел решение. Может кому будет интересно



Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set ifile=inFile.txt
set tfile=outFile.txt
set find=windows
if exist %tfile% del /Q %tfile%
(for /F "tokens=* usebackq delims=" %%a In ("%ifile%") do (
	set line=%%a
	Echo !line:~0,-14!
))>"%tfile%"
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле

Сообщение Iska »

nexxie, строка:


Цитата nexxie:





Код:

Код: Выделить всё

if exist %tfile% del /Q %tfile%

CMD/BAT - [решено] Удаление 14 последних символов в каждой строке в файле




в данном контексте лишняя — файл %tfile% в любом случае будет перезаписан.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»