PDA

Показать полную графическую версию : [решено] Удаление 14 последних символов в каждой строке в файле


nexxie
20-02-2021, 19:06
Добрый день!
Нужна ваша помощь.
Есть текстоый файл(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
20-02-2021, 19:30
param(
$pathIN = "D:\inFile.txt",
$pathOUT = "D:\outFile.txt"
)cls

(gc $pathIN)-replace".{14}$"|
Out-File $pathOUT

NickM
20-02-2021, 20:07
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
20-02-2021, 21:08
Спасибо всем. Я нашел решение. Может кому будет интересно

@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
20-02-2021, 21:23
nexxie, строка:
if exist %tfile% del /Q %tfile% »
в данном контексте лишняя — файл %tfile% в любом случае будет перезаписан.

nexxie
20-02-2021, 21:41
Спасибо!




© OSzone.net 2001-2012