![]() |
Удалить последнее слово в строке
Доброго времени суток!
Подскажите пожалуйста как решить такую задачу, никак не могу найти нужной команды. Есть фаил t1.txt, в нем есть строка "c:\folder1\ololo\folder2\doc.txt", как удалить doc.txt ? Название этих файлов doc.txt всегда будут разные, но это всегда будут тхт файлы, нужно чтобы остался только путь до папки т.е. c:\folder1\ololo\folder2\ Пробовал делать через найти и заменить, получилось поменять путь, на который мне надо, но убрать последнее слово так и не придумал как. Пробовал через findstr, команда выглядит так: findstr /s /m "parametr" C:\folder1*.* Но она возвращает полный адрес, т.е. c:\folder1\folder2\folder3\doc.txt, а нужно c:\folder1\folder2\folder3\ 2ой вариант искал возможность это копировать на каталог выше фаил. Например он лежит c:\folder1\folder2\folder3\doc.txt, а скопировать в c:\folder1\folder2\doc.txt, но опять же фаил находит findstr по параметрам, но конечные папки неизвестны. Пробовал делать xcopy "..\" но в таком виде он копирует в корень диска C. Также пробовал делать циклом, а именно: @echo off setlocal enabledelayedexpansion FOR /F "delims=arh" %%i in (c:\temp1\t1.txt) do ( echo %%i>c:\temp1\pars.txt ) Но проблема в том, что он обрезает строку, когда встретит буквы a,r или h, а надо чтобы он читал до того момента, когда встретит именно "arh". В строке такое слово только 1, например C:\test1\test-r\test-a\arh\doc.txt В таком виде он обрезает до C:\test1\test- , а нужно чтобы до C:\test1\test-r\test-a\ Если есть какие то идеи как реализовать это подскажите пожалуйста. Заранее спасибо. |
Цитата:
Код:
for %%i in (c:\folder1\ololo\folder2\doc.txt) do echo %%~dpi Цитата:
Код:
pushd c:\folder1\ololo\folder2 Код:
copy c:\folder1\folder2\folder3\doc.txt c:\folder1\folder2\folder3\.. |
не то. в данном случае он обрезает путь до файла, который c:\temp\t1.txt. В самом t1.txt есть путь к нужному файлу, т.е. строка c:\folder1\ololo\folder2\doc.txt , и надо обрезать как раз её, т.е. содержимое t1.txt
По копированию - варианты не подходят, тк адрес файла неизвестен, он возвращается findstr. |
AlekseyB., Т.е из файла c:\temp\t1.txt взять строку и обрезать? Строка там одна или несколько, по какому принципу искать нужную? Чем конкретней вопрос, тем правильней ответ.
Код:
@echo off |
В самом первом посте же написал - есть фаил t1.txt, в нем есть строка "c:\folder1\ololo\folder2\doc.txt", как удалить doc.txt ?
Строка только одна. Она в t1.txt попадает с помощью findstr /s /m "!sm!" C:\папка для поиска\*.* > C:\temp1\t1.txt !sm! - задаваемый параметр. Какая это будет строка неизвестно, но точно известно что это будет адрес файла в виде c:\folder1\folder2\folder3\doc.txt Вот этот самый файлик doc.txt нужно скопировать на каталог выше. Либо в этой строке удалить doc.txt и сделать t2.txt в виде c:\folder1\folder2\folder3\ - тут уже можно просто копированием. Либо делать парсер, что я тоже пытался но безрезультатно, парсить до слово arh. Делаю так FOR /F "delims=arh" %%i in (c:\temp1\t1.txt) do ( echo %%i>c:\temp1\pars.txt ) Но не получается именно arh, он ищет либо до a, либо до r, либо до h ps - doc.txt тоже переменная. фаил может называеться ololo.txt palmeb.txt и тд и тп, но это всегда txt фаил |
AlekseyB., то, что Вы пытаетесь сделать — излишне. Приведите полное задание.
|
AlekseyB.,
Цитата:
Код:
set /p a=<c:\temp\t1.txt |
полное - найти фаил по параметрам. фаил нужно найти не по названию, а по содержанию внутри файла (все файлы текстовые документы), потом скопировать этот фаил на каталог выше, потом скопировать путь к этому в текстовый док, потом в этом путе найти слово qwe и заменить его на asd и добавить новый путь к старому через символ #, потом ещё нужно в этом текстовом доке дописать константы, но это мелочи.
Сейчас у меня только загвоздка с копированием. строка одна всегда 2Foreigner В таком виде работает, потестирую с разными именами файлов и путей. Огромное спасибо! Не могли бы объяснить код? Не могу найти что значат dpi в .bat |
Цитата:
Код:
%~d -- диск Код:
for /? |
%~dpi -диск путь и что ещё? Как диск и путь удаляют последнее слово? и что значит "~" ?
|
Цитата:
Цитата:
Цитата:
|
Цитата:
с остальным более менее понял, спасибо! |
Цитата:
Код:
… %%~dpi … |
Понял, спасибо! а что значит "a=<" ? (set /p a=<c:\temp\t1.txt)
Ещё вопрос про переменные, чтобы уже до конца разобраться - можно ли переменной присвоить значение внутри текстового файла? Ну чтобы чтение из файла шло в переменную? А потом соответственно с ней (переменной) оперировать? |
Код:
set /p a=<c:\temp\t1.txt Цитата:
|
Спасибо огромное!
|
Время: 19:59. |
Время: 19:59.
© OSzone.net 2001-