Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить последнее слово в строке

Ответить
Настройки темы
CMD/BAT - Удалить последнее слово в строке

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: AlekseyB.
Дата: 11-09-2013
Доброго времени суток!
Подскажите пожалуйста как решить такую задачу, никак не могу найти нужной команды.
Есть фаил 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\

Если есть какие то идеи как реализовать это подскажите пожалуйста. Заранее спасибо.

Отправлено: 16:57, 11-09-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата AlekseyB.:
…и что ещё? »
И ничего.

Цитата AlekseyB.:
Как диск и путь удаляются последнее слово? »
Никак не удаляют. Из внутренней переменной извлекается только имя раздела и путь.

Цитата AlekseyB.:
и что значит "~" ? »
Модификатор, изменяющий поведение внутренней переменной.

читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for %%i in ("*.txt") do (
	echo 1. %%i
	echo 2. %%~i
	echo 3. %%~fi
	echo 4. %%~di
	echo 5. %%~pi
	echo 6. %%~ni
	echo 7. %%~xi
	echo 8. %%~dpi
	echo 9. %%~dpnxi
)

endlocal
exit /b 0
Цитата:
Код: Выделить весь код
1. My Text File.txt
2. My Text File.txt
3. E:\Песочница\0320\My Text File.txt
4. E:
5. \Песочница\0320\
6. My Text File
7. .txt
8. E:\Песочница\0320\
9. E:\Песочница\0320\My Text File.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:39, 11-09-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Цитата AlekseyB.:
…и что ещё? »
И ничего. »
%~dpi - а как же i ?
с остальным более менее понял, спасибо!

Отправлено: 21:06, 11-09-2013 | #12


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата AlekseyB.:
%~dpi - а как же i ? »
Это внутренняя переменная «%%i»:
Код: Выделить весь код
%%~dpi
а «~», «d» и «p» — её модификаторы.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:46, 12-09-2013 | #13


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Понял, спасибо! а что значит "a=<" ? (set /p a=<c:\temp\t1.txt)
Ещё вопрос про переменные, чтобы уже до конца разобраться - можно ли переменной присвоить значение внутри текстового файла? Ну чтобы чтение из файла шло в переменную? А потом соответственно с ней (переменной) оперировать?

Последний раз редактировалось AlekseyB., 12-09-2013 в 10:00.


Отправлено: 09:54, 12-09-2013 | #14


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
set /p a=<c:\temp\t1.txt
«set» — команда задания переменной окружения «a» некоего значения. «/p» — модификатор данной команды, позволяющий осуществить ввод этого значения с клавиатуры. При его задействовании появляется возможность использовать перенаправление ввода — «<» — из файла. Результатом исполнения приведённой команды будет то, что переменной окружения «a» будет присвоено значение первой строки из файла «c:\temp\t1.txt». Как правило, применяется вместо разбора содержимого файла по «for /f» с последующим присвоением, когда надо считать только одну или несколько первых строк.

Цитата AlekseyB.:
Ещё вопрос про переменные, чтобы уже до конца разобраться - можно ли переменной присвоить значение внутри текстового файла? Ну чтобы чтение из файла шло в переменную? А потом соответственно с ней (переменной) оперировать? »
Именно это и делает вышеуказанная команда. Но только одной (первой) строки файла. Допустимо чтение нескольких строк в рамках одной операции перенаправления, например…
читать дальше »

E:\Песочница\0320\0001.txt:
Код: Выделить весь код
First
Second
Third
Fourth
Fifth
Пакетный файл:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

<"E:\Песочница\0320\0001.txt" (
	set /p sVar01=
	set /p sVar02=
	set /p sVar03=
)

echo %sVar01%
echo %sVar02%
echo %sVar03%

endlocal
exit /b 0
Результат:
Цитата:
Код: Выделить весь код
First
Second
Third
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:20, 12-09-2013 | #15


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 10:28, 12-09-2013 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить последнее слово в строке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как удалить определенный символ в строке из батника RedX Скриптовые языки администрирования Windows 1 18-01-2012 10:36
CMD/BAT - [решено] Удалить все знаки в строке после ; hxygen Скриптовые языки администрирования Windows 11 16-11-2010 02:34
Все знают про обьеденение строк ('слово'&'еще слово'), а есть ли способ исключениеня? tweakos AutoIt 3 15-07-2009 09:52
Звук - Колонки - последнее решение Analog Прочее железо 6 03-01-2009 08:03
последнее сообщение Dimas_83 О сайте и форуме 2 04-07-2006 10:57




 
Переход