Войти

Показать полную графическую версию : Список директорий и поддиректорий


pma87
06-10-2010, 02:16
Хочу написать скрипт для автоматического создания virtualhost для apache и прописыванием в hosts. Ниже скрипт, который должен сканировать домены (директории) на диске F: и поддомены (поддиректории) в них, остальной уровень вложенности игнорировать. Домены и поддомены должны хранится в разных переменных.



ChCp 1251>Nul
Set folder=f:
Del /q listfolder.txt 2>Nul
For /F "UseBackQ Delims=" %%I In (`Dir "%folder%" /AD /B /ON 2^>Nul`) Do (

set domeny=%%I

For /F "UseBackQ Delims=" %%a In (`Dir %folder%/%domeny% /AD /B /ON 2^>Nul`) Do (
Echo %%a>>listfolder.txt
)
)
Pause>Nul

не работает "set domeny=%%I", значение не присваивается. В bat не силен, может кто сможет помочь? Что не правильно в скрипте?

gora
06-10-2010, 08:23
Что не правильно в скрипте? »
[решено] Как работать с переменной внутри цикла FOR? (http://forum.oszone.net/thread-186913.html)

amel27
06-10-2010, 09:45
можно и без DIR обойтись:
chcp 1251>Nul 2>listfolder.txt
for /d %%i in (t:\*) do for /d %%a in ("%%i\*") do echo %%a >>listfolder.txt

pma87
06-10-2010, 23:20
amel27, спасибо за помощь, но Ваш скрипт выдает результат:

f:\site1.loc\www
f:\site2.loc\www
f:\site3.loc\www

Можно сделать так, чтобы в одной переменной было site1.loc, а в другой www?

pma87
07-10-2010, 03:03
Всем спасибо за помощь, скрипт написал. Скрипт сканирует директории доменов и поддоменов, записывает их в hosts и httpd-vhosts.conf. Настройки указать в bat файле. Буду рад выслушать замечания. В файлы start-host.txt и start-httpd-vhosts.txt записываются первоначальные конфигурации host и httpd-vhosts.conf.

amel27
07-10-2010, 04:03
Можно сделать так, чтобы в одной переменной было site1.loc, а в другой www? »%%~ni - 1-й уровень, %%~na - 2-й уровень
chcp 1251>Nul 2>listfolder.txt
for /d %%i in (t:\*) do for /d %%a in ("%%i\*") do echo "%%~ni"--"%%~na" >>listfolder.txt

P.S. в этом методе скрытые каталоги игнорируются автоматически, для DIR нужен ключ: "/AD-H"




© OSzone.net 2001-2012