Еще одним полезным свойством символа «^» является перенос строк.
То есть, если текст вашей команды слишком длинный, то это делает сценарий менее наглядным и удобочитаемым.
Символ ^ должен быть последним в строке и означает, что следующая строка является продолжением текущей.
Возможно разделение более, чем на две строки. Предел не проверял ).
В официальной документации описание такого действия знака ^ не нашел.
Опытным путем установил, что если в команде FOR такой разрыв поставить после IN и перед круглой скобкой, то произойдет ошибка разбора. Возможен разрыв строки команды FOR перед IN. При этом в следующей строке IN должен следовать с первой позиции.
Наличие такого исключения позволяет полагать, что возможно и в других сложных операторах могут возникнуть проблемы с разрывом строки. Используйте эту возможность аккуратно.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Есть следующий bat файл с кодом
for /l %%i in (1,1,10) do echo >%%i.php
Нужно сделать чтобы он создавал файлы вот так
for /l %%i in (1,1,10) do echo
>%%i.php
Но так попробовал не работает.
- Вопрос задан 26 дек. 2018
- 1170 просмотров
Знак ^ = экранирует спец символы
Если надо пустую строку, то можно сделать так echo. >> %%i.php (т.е. точка на конце echo)
В первой команде используется > чтобы перезаписать файл при повторном вызове, в отличие от >> который добавляет данные без перезаписи
Я вот пытался с трех строк тоже сделать
А можете подсказать, как сделать с переменными
типа
1=какой то текст 1
2=какой-то текст 2
3=какой-то текст 3
и потом писать что-то вроде echo %1%
Надеюсь я правильно объяснил))) мб нужна команда set
А можете подсказать, как сделать с переменными
типа
да через SET, по-моему так (у меня линукс не могу проверить)
То есть нужно получить в этом файле текст в столбец
Раз
Два
Все txt файлы лежать в одной папке, но разбросаны по подпапкам.
Заранее спасибо за ответ!
Пока что найдено решение на VBS скрипт. В принципе все работает. Но можно ли все таки на BAT это реализовать?
Пример VBS скрипта если вдруг кто столкнется с подобной задачей
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set f = fso.OpenTextFile(«1.txt», 1)
setFile = f.ReadAll
f.Close
str=»$»
str2=vbcrlf
setFile = Replace(setFile, str, str2)
Set f = fso.OpenTextFile(«1.txt», 2)
f.Write setFile
f.Close
Set f = Nothing
Set fso = Nothing
for /r «%folder%» %%i in (*.txt) do (
del «%tmpfile%» /q 2>nul
for /f «usebackq delims=» %%j in («%%i») do call :parseLine «%%j» «%tmpfile%»
move «%tmpfile%» «%%i»
)
1
:parseLineNext
for /f «tokens=1,* delims=$» %%i in («%str%») do (
echo %%i>>%2
set str=%%j
)
if not «%str%»==»» goto parseLineNext
exit /b