Имеется строка %%a
Если строка не пустая (или содержит пробелы и табуляцию), то выполняем действие (скажем :call test), иначе пропускаем.
Мой код заключается в построчном чтении файла (for /f), и удаление в указанной строке: файла или папки
Но если присутствует пробелы между строками, то программа ведет себя не так как надо.
CMD/BAT - проверки строки на пробелы
-
megaloman
Re: CMD/BAT - проверки строки на пробелы
vngreez@vk, Неплохо бы посмотреть, как Вы считываете строки из файла и сам файл. ИМХО, при считывании в FOR в большинстве случаев пустые строки пропускаются.
-
vngreez@vk
Re: CMD/BAT - проверки строки на пробелы
Код:
call :log - вызывает код с записью действий в файл
Код: Выделить всё
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 - проверки строки на пробелы
vngreez@vk, ИМХО, применять здесь вложенный For не имеет смысла, так как
Код:
в данном контексте выполняется всегда и далее %%с нигде не используется. Предоставьте файл, иначе трудно понять что не так.
Что получается, если вместо всей приведенной конструкции для отладки оставить строку
Код:
Кстати, в имени файла из переменной %%a содержатся пробелы? Тогда надо кавычки:
Код:
Почему-то ниже Вы их используете.
Код:
Код: Выделить всё
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 - проверки строки на пробелы
Так можно определить какая строка строка начинается с пробела а какая пустая
Код: Выделить всё
@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