CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле

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

CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле

Сообщение InVariable »

Помогите решить задачку.

Есть файл-лист (list.txt) вида:



*.????.ini

*.????.ini

*.????.ini

*.????.ini

*.????.ini

*.????.ini

*.????.ini



Необходимо взять имена файлов из него и переместить в файл list1.txt, но имена переделать в такой вид:



*.ini

*.ini

*.ini

*.ini

*.ini

*.ini

*.ini



Т.е. надо удалить из имени файла .????.
Аватара пользователя
gora

Re: CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле

Сообщение gora »

Код:

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

@Echo Off
SetLocal EnableDelayedExpansion
:: Обрабатываемый файл
Set file=e:\Temp\list.txt
(For /F "usebackq tokens=* delims=" %%i In ("%file%") Do (
	Set ti=%%~ni
	Echo !ti:~0,-5!%%~xi
))>list1.txt
Аватара пользователя
InVariable

Re: CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле

Сообщение InVariable »

Добрый день.



У меня похожая задача, только искомый текст разный. Хотел бы его задать в виде переменных:





Код:

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

set "path=C:\путьдофайла.txt" 
set "str1 = текст1" 
set "str2 = текст2" 
set "str3 = текст3" 
Найти эти строки в файле %path% и удалить. сохранить изменения.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле

Сообщение Georgio »

Цитата Freem:



set "path=C:\путьдофайла.txt"
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле










"PATH" -- это системная переменная, которая определяет пути к системным файлам и некоторым программам. Если Вам в дальнейшем нужно будет использовать в коде утилиты командной строки или вызывать новый экземпляр "cmd.exe" (а Вам придётся это делать), то в итоге получите примерно такую "картину":









Код:

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

C:\>set "path=C:\путьдофайла.txt"
C:\>cmd.exe /c
"cmd.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

.












Цитата Freem:



set "str1 = текст1"
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле










Не вставляйте никаких пробелов до и после знака равенства, иначе установите не ту переменную, которую хотели, и не с тем значением, которое хотели:









Код:

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

C:\>set "str1 = текст1"
C:\>echo %str1%
%str1%
C:\>echo %str1 %
 текст1

.












Цитата Freem:



Найти эти строки в файле %path% и удалить. сохранить изменения.
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле










Попробуте такой код (принцип взят из "
CMD/BAT - [решено] Удалить из файла "Test.txt" все символы звездочка *
"):









Код:

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

@echo off
setlocal
set "file=C:\Test.txt"
set "str1=текст1"
set "str2=текст2"
set "str3=текст3"
for /l %%i in (1 1 3) do call call :sub "%%str%%i%%"
endlocal
exit/b 0
:sub
 for /f %%i in ('
  ^<"%file%" find/c /v ""
 ') do <"%file%">.tmp (
  for /l %%j in (1 1 %%i) do (
   set x=& set/p x=& if defined x (
    for /f "delims=" %%k in ('cmd/v/c echo "!x:%~1=!"') do (
     echo.%%~k
    )
   ) else (
    echo.
   )
  )
 )
 >nul move .tmp "%file%"
 goto :eof

.
Ответить

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