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

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

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

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


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

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


Имеется строка %%a
Если строка не пустая (или содержит пробелы и табуляцию), то выполняем действие (скажем :call test), иначе пропускаем.

Мой код заключается в построчном чтении файла (for /f), и удаление в указанной строке: файла или папки
Но если присутствует пробелы между строками, то программа ведет себя не так как надо.

Отправлено: 12:11, 02-09-2017

 

Ветеран


Contributor


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

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


vngreez@vk, Неплохо бы посмотреть, как Вы считываете строки из файла и сам файл. ИМХО, при считывании в FOR в большинстве случаев пустые строки пропускаются.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 16:36, 02-09-2017 | #2



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

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


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


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

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


Код: Выделить весь код
	for /F "tokens=*" %%c in ("!port!\delete.list") do (
		if not "%%c"=="" (
			if not "%%c"==" " (
				for /f "usebackq tokens=*" %%a in ("!port!\delete.list") do (
					if exist %work%\rom\%%a (
						del "%work%\rom\%%a" /q /s >nul 2>&1
						rd "%work%\rom\%%a" /q /s >nul 2>&1
						call :log "[-] %%a"
					) else ( call :log "[?] not found: %%a" )
				)
			)
		)
	)
call :log - вызывает код с записью действий в файл

Отправлено: 10:17, 03-09-2017 | #3


Ветеран


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

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


vngreez@vk, а где:
Цитата megaloman:
и сам файл »
?
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:30, 03-09-2017 | #4


Ветеран


Contributor


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

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


vngreez@vk, ИМХО, применять здесь вложенный For не имеет смысла, так как
Код: Выделить весь код
		if not "%%c"=="" (
			if not "%%c"==" " (
в данном контексте выполняется всегда и далее %%с нигде не используется. Предоставьте файл, иначе трудно понять что не так.
Что получается, если вместо всей приведенной конструкции для отладки оставить строку
Код: Выделить весь код
for /f "usebackq tokens=*" %%a in ("!port!\delete.list") do Echo %%a   %work%\rom\%%a
pause
Кстати, в имени файла из переменной %%a содержатся пробелы? Тогда надо кавычки:
Код: Выделить весь код
if exist "%work%\rom\%%a"
Почему-то ниже Вы их используете.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 03-09-2017 в 11:07.


Отправлено: 10:53, 03-09-2017 | #5


Ветеран


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

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


Так можно определить какая строка строка начинается с пробела а какая пустая
Код: Выделить весь код
@echo off
<file.txt (for /f "tokens=1* delims=[]" %%a in ('find /v /n ""') do @call :s "%%b")
pause& exit

:s
 echo "%~1"|>nul findstr /rc:"\<[ ]" && (
   echo Строка начинается с пробела
  ) || (
   if not "%~1"=="" (<nul set /p="%~1"& echo:) else (echo Строка пустая)
  )
exit /b
но в конечном-то итоге согласно вашего условия все проще получается:
Код: Выделить весь код
@echo off
<file.txt (for /f "tokens=1* delims=[]" %%a in ('find /v /n ""') do @call :s "%%b")
pause& exit

:s
 if "%~1"=="" (echo Действий для "%~1" не выполняем) else (echo Выполняем действие для "%~1")
exit /b

Последний раз редактировалось alpap, 03-09-2017 в 21:57.


Отправлено: 21:37, 03-09-2017 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как вставить пробелы в строки vision-d Скриптовые языки администрирования Windows 17 21-03-2014 14:48
CMD/BAT - [решено] bat файл для проверки запущенной программы, в имени есть пробелы aculeus Скриптовые языки администрирования Windows 2 05-06-2013 17:19
Прочее - [решено] Как заменить пробелы в названиях файлов на подчеркивания? Naiad Общий по Linux 2 13-02-2009 19:40
[решено] Работа из командной строки | Убрать все пробелы в текстовом файле Greyman Хочу все знать 11 17-06-2007 22:44
Нужен макрос на VB чтобы в Ворде удалял лишние пробелы Leon71 Программирование и базы данных 2 28-07-2003 02:26




 
Переход