Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле (http://forum.oszone.net/showthread.php?t=225474)

InVariable 17-01-2012 13:58 1837863

CMD/BAT - С помощью bat-ника найти и удалить текст в файле
 
Помогите решить задачку.
Есть файл-лист (list.txt) вида:

*.????.ini
*.????.ini
*.????.ini
*.????.ini
*.????.ini
*.????.ini
*.????.ini

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

*.ini
*.ini
*.ini
*.ini
*.ini
*.ini
*.ini

Т.е. надо удалить из имени файла .????.

gora 17-01-2012 14:30 1837898

Код:

@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 17-01-2012 14:38 1837907

Огромное спасибо!

Freem 22-05-2015 17:28 2510289

Добрый день.

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

Код:

set "path=C:\путьдофайла.txt"
set "str1 = текст1"
set "str2 = текст2"
set "str3 = текст3"

Найти эти строки в файле %path% и удалить. сохранить изменения.


Georgio 22-05-2015 20:06 2510356

Цитата:

Цитата Freem
set "path=C:\путьдофайла.txt" »




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



Код:

C:\>set "path=C:\путьдофайла.txt"

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

.





Цитата:

Цитата Freem
set "str1 = текст1" »




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



Код:

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

C:\>echo %str1%
%str1%

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

.





Цитата:

Цитата Freem
Найти эти строки в файле %path% и удалить. сохранить изменения. »




Попробуте такой код (принцип взят из "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

.


Время: 12:55.

Время: 12:55.
© OSzone.net 2001-