CMD/BAT - проверки строки на пробелы

Ответить
Аватара пользователя
vngreez@vk

CMD/BAT - проверки строки на пробелы

Сообщение vngreez@vk »

Имеется строка %%a

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



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

Но если присутствует пробелы между строками, то программа ведет себя не так как надо.
Аватара пользователя
megaloman

Re: CMD/BAT - проверки строки на пробелы

Сообщение megaloman »

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

Re: CMD/BAT - проверки строки на пробелы

Сообщение vngreez@vk »

Код:

Код: Выделить всё

	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 - вызывает код с записью действий в файл
Аватара пользователя
megaloman

Re: CMD/BAT - проверки строки на пробелы

Сообщение megaloman »

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"

Почему-то ниже Вы их используете.
Аватара пользователя
alpap

Re: CMD/BAT - проверки строки на пробелы

Сообщение alpap »

Так можно определить какая строка строка начинается с пробела а какая пустая

Код: Выделить всё

@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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»