ruslaw
15-01-2018, 13:56
Имеется папка с подпапками разного уровня вложений и файлы в них
Имеется батник (indexer.bat), который помещает в каждую папку список имен содержащихся в них файлов (index.txt):
indexer.bat
@Echo Off
chcp 1251
Set "BoxIn=E:\test"
Set "LogExt=txt"
Call :DirTxt "%BoxIn%"
For /F "usebackq delims=" %%d In (`Dir "%BoxIn%" /b /A:D /S 2^>nul`) DO Call :DirTxt "%%d"
GoTo :Eof
:DirTxt
rem:: заменяем %~nx1 на 1ndex и получаем индексный файл с названием index.html вместо html-файла названного именем папки
Set "OutLog=index.%LogExt%"
>"%~1\%OutLog%" (For /F "usebackq delims=" %%f In (`Dir "%~1" /b /A:-D-H 2^>nul`) DO If /I Not "%%f"=="%OutLog%" @Echo %%f
GoTo :Eof
По завершении работы этого батника необходимо запустить другой батник (replace.bat), который осуществляет замену текста в части этих index.txt (имеющихся в каждой папке)
replace.bat:
cscript replace.vbs "E:\path-1\index.txt" "заменяемый текст1" "заменяющий текст1"
.........
cscript replace.vbs "E:\path-N\index.txt" "заменяемый текстN" "заменяющий текстN"
replace.vbs - готовый скрипт, не имеющий отношения к данному вопросу.
Как сделать так, чтобы replace.bat запускался только после того как indexer.bat завершит свою работу, а не начинал работать параллельно, рискуя пропустить те index.txt которые еще не успели создаться.
Команда start /wait типа
start.bat:
start /wait indexer.bat
start /wait replace.bat (или: call indexer.bat)
мне не помогла - все равно начинают работу параллельно.
Имеется батник (indexer.bat), который помещает в каждую папку список имен содержащихся в них файлов (index.txt):
indexer.bat
@Echo Off
chcp 1251
Set "BoxIn=E:\test"
Set "LogExt=txt"
Call :DirTxt "%BoxIn%"
For /F "usebackq delims=" %%d In (`Dir "%BoxIn%" /b /A:D /S 2^>nul`) DO Call :DirTxt "%%d"
GoTo :Eof
:DirTxt
rem:: заменяем %~nx1 на 1ndex и получаем индексный файл с названием index.html вместо html-файла названного именем папки
Set "OutLog=index.%LogExt%"
>"%~1\%OutLog%" (For /F "usebackq delims=" %%f In (`Dir "%~1" /b /A:-D-H 2^>nul`) DO If /I Not "%%f"=="%OutLog%" @Echo %%f
GoTo :Eof
По завершении работы этого батника необходимо запустить другой батник (replace.bat), который осуществляет замену текста в части этих index.txt (имеющихся в каждой папке)
replace.bat:
cscript replace.vbs "E:\path-1\index.txt" "заменяемый текст1" "заменяющий текст1"
.........
cscript replace.vbs "E:\path-N\index.txt" "заменяемый текстN" "заменяющий текстN"
replace.vbs - готовый скрипт, не имеющий отношения к данному вопросу.
Как сделать так, чтобы replace.bat запускался только после того как indexer.bat завершит свою работу, а не начинал работать параллельно, рискуя пропустить те index.txt которые еще не успели создаться.
Команда start /wait типа
start.bat:
start /wait indexer.bat
start /wait replace.bat (или: call indexer.bat)
мне не помогла - все равно начинают работу параллельно.