Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] удаление части строки

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


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

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


Привет Алл!
Вопрос детский, наверное. )
Есть файл, который формируется ежедневно. в нем такие строки

users:
name=Vasia Pupkin
name=Yulia Ivanova
name=Sidor Pavlov

как средствами винды удалять в файле слово "name="
если не трудно пример кода

Отправлено: 14:11, 09-03-2011

 

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


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

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


Цитата Georgio:
~Cache~, а где Вы видели, чтобы в выводе команды "dir" была строка "|CD"? »
вывод команды DIR из директории c:\Program Files - дает следующее:
Код: Выделить весь код
c:\Program Files\Common Files
c:\Program Files\ConEmu
c:\Program Files\DVD Maker
c:\Program Files\Ext2Fsd
соответственно вывод CD из директории c:\Program Files = c:\Program Files


или вы считаете, что запись SET srt=|CD подразумевает присвоение переменной srt фразы "|CD" а не присвоение переменной str значения от выполнения команды CD ?
специально проверил:
Код: Выделить весь код
SET srt=|CD
echo %srt%
вывод: c:\Program Files

Последний раз редактировалось ~Cache~, 27-08-2014 в 15:03.


Отправлено: 14:47, 27-08-2014 | #11



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

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


Ветеран


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

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


Цитата ~Cache~:
т.к. сам скрипт создает данный файл командой DIR /b /s /a:d > %file% »
Значит, я не совсем понял логику работы пакетного файла.

Цитата ~Cache~:
или вы считаете, что запись SET srt=|CD подразумевает присвоение переменной srt фразы "|CD" а не присвоение переменной str значения от выполнения команды CD ? »
Ни то, ни другое. Это попытка передать команде «CD», выводящей текущий каталог (именно поэтому Вы и видите:
Цитата ~Cache~:
вывод: c:\Program Files »
), пустой вывод команды «SET srt=». В результате такого перенаправления команда «SET srt=» не отрабатывает.

Отправлено: 15:10, 27-08-2014 | #12


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


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

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


Цитата Iska:
вывод: c:\Program Files »
), пустой вывод команды «SET srt=». В результате такого перенаправления команда «SET srt=» не отрабатывает. »
допустим, я не правильно использовал перенаправление
тогда, как присвоить переменной str значениие вывода команды cd?

вы так же не обратили внимание на мой 1 пост, там было сказано об ошибке/фиче того скрипта, который тут когда-то был решен, т.е. если поменять значение переменной str c name на nam - то в файле не будет удалена часть строки соответствующая значению переменной, что видимо и мешает в моей интерпретации скрипта

Отправлено: 15:23, 27-08-2014 | #13


Ветеран


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

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


Цитата ~Cache~:
тогда, как присвоить переменной str значениие вывода команды cd? »
А не надо присваивать значение вывода (и почему «str», было ж «srt»?). Достаточно:
Код: Выделить весь код
set srt=%CD%
Цитата ~Cache~:
вы так же не обратили внимание на мой 1 пост, там было сказано… »
Там было вообще непонятно — зачем «SET srt=|CD». Не очень понятно и теперь. Опишите словами, что именно Вам нужно получить в целом.

Отправлено: 15:39, 27-08-2014 | #14


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


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

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


Цитата Iska:
(и почему «str», было ж «srt»?) »
опечатка при написании поста
Цитата Iska:
Там было вообще непонятно — зачем «SET srt=|CD». Не очень понятно и теперь. Опишите словами, что именно Вам нужно получить в целом. »
обращая внимание на первый пост я говорил не о «SET srt=|CD»
а о том, что если в том примере, который тут был изначально, (про name=Yulia Ivanova и т.д.) заменить строку (сократить ее) - то работать код перестает т.к. знак равенства находится в самом цикле
и соответственно,«SET srt=|CD» не работает и мой пример, если к примеру поменять «SET srt=|CD» на «SET srt=C:\Prog» или на «SET srt=Files» - надеюсь так понятней о чем я

я чутка разобрался, как работает данный цикл, он не ищет переменную %srt% - как я считал изначально, он разбивает строку по знаку равно и сравнивает левую часть со значением переменной %srt%
в результате, я использовал не подходящий мне скрипт (был бы коммент о принципе работы данного скрипта, не было бы столько не нужных вопросов и уточнений - была бы отдельная тема по конкретной проблеме)

вообще - суть моего скрипта, получить названия директорий и поддиректорий исходя из текущего расположения скрипта (т.е. все директории расположенные в данной папке, а так же вложенные в них), без полных путей

Отправлено: 16:03, 27-08-2014 | #15


Ветеран


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

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


Цитата ~Cache~:
вообще - суть моего скрипта, получить названия директорий и поддиректорий исходя из текущего расположения скрипта (т.е. все директории расположенные в данной папке, а так же вложенные в них), без полных путей »
Пробуйте:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~dp0

if exist "%sSourceFolder%\." (
	for /f "usebackq delims=" %%i in (
		`dir /b /s /a:d "%sSourceFolder%\*.*" 2^>nul`
	) do (
		set sFolder=%%~i
		echo !sFolder:%sSourceFolder%=!
	)
) else (
	echo Can't findsource folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0
Так? Или от вложенных каталогов нужны только имена, а не относительные пути?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:49, 27-08-2014 | #16


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


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

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


Цитата Iska:
Так? Или от вложенных каталогов нужны только имена, а не относительные пути? »
судя по выводу консоли - то что нужно, хотя вариант с выводом только последнего каталога тоже бы пригодился...
но сразу вопрос, как в таком варианте скрипта вывести результат в файл?

Цитата ~Cache~:
как в таком варианте скрипта вывести результат в файл? »
видимо сам отвечу:
Код: Выделить весь код
@echo off

setlocal enableextensions enabledelayedexpansion

set fname=test.txt
del %fname% > nul
set sSourceFolder=%~dp0


if exist "%sSourceFolder%\." (
	for /f "usebackq delims=" %%i in (
		`dir /b /s /a:d "%sSourceFolder%\*.*" 2^>nul`
	) do (
		set sFolder=%%~i
		echo !sFolder:%sSourceFolder%=! >> %fname%
	)
) else (
	echo Can't findsource folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0

Последний раз редактировалось ~Cache~, 27-08-2014 в 17:28.


Отправлено: 17:02, 27-08-2014 | #17


Ветеран


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

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


Цитата ~Cache~:
но сразу вопрос, как в таком варианте скрипта вывести результат в файл? »
Я обычно делаю так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~dp0
set sDestFile=Result.txt

if exist "%sSourceFolder%\." (
	>"%sDestFile%" (
		for /f "usebackq delims=" %%i in (
			`dir /b /s /a:d "%sSourceFolder%\*.*" 2^>nul`
		) do (
			set sFolder=%%~i
			echo !sFolder:%sSourceFolder%=!
		)
	)
) else (
	echo Can't findsource folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0
Цитата ~Cache~:
хотя вариант с выводом только последнего каталога тоже бы пригодился... »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~dp0
set sDestFile=Result.txt

if exist "%sSourceFolder%\." (
	>"%sDestFile%" (
		for /f "usebackq delims=" %%i in (
			`dir /b /s /a:d "%sSourceFolder%\*.*" 2^>nul`
		) do echo %%~nxi
	)
) else (
	echo Can't findsource folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:27, 27-08-2014 | #18


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


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

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


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

Отправлено: 17:32, 27-08-2014 | #19



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Удаление принтеров из командной строки denzill Microsoft Windows 2000/XP 45 24-08-2021 23:31
PowerShell - [решено] Удаление пустой строки в файле monolit Скриптовые языки администрирования Windows 4 17-08-2013 13:57
Разное - Удаление строки инсрументов Forpost Оформление Windows 11/ 10 / 8 / 7 / Vista 3 24-01-2011 20:32
удаление строки Windows из загрузчика Linux Baiker Хочу все знать 7 04-01-2011 04:36
[решено] Удаление строки из файла gregaz AutoIt 2 16-07-2009 18:46




 
Переход