Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка на наличие папок в директории

Ответить
Настройки темы
CMD/BAT - Проверка на наличие папок в директории

Новый участник


Сообщения: 28
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Есть папка "A" (представлена как переменная %sFolder%), нужно чтобы батник искал в папке "A", папки: "B" , "C", "D", "E" и определенные файлы.
Если папка какая-та не найдена, чтобы в батнике (echo) было написано:
ПАПКА B НЕ НАЙДЕНА.

а если допустим Б не найдено, а следующая папка С найдена, писалось (echo):
ПАПКА С НАЙДЕНА.

Коротко говоря, требуется батник который будет искать определенные папки, и определенные файлы в каждых из этих папок.
При удачном нахождении и при неудаче будет писаться в батнике информация что найдено, или же не найден, тобишь.
echo ПАПКА НАЙДЕНА...
echo Проверка файлов в ней....
echo В ПАПКЕ "B" ОТСУТСТВУЕТ ФАЙЛ "settings.dff" , "develop.ini"
echo Проверка папки C...
echo В ПАПКЕ "C" ВСЁ НА МЕСТЕ.

Буду очень благодарен, заранее спасибо.

Отправлено: 16:09, 16-11-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Правьте по своему разумению:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sRootFolder=E:\Песочница\0331

if exist "%sRootFolder%\." (
	for %%i in ("B" "C" "D" "E") do (
		if exist "%sRootFolder%\%%~i\." (
			echo Folder [%%~i] exists.
			
			for %%j in ("settings.dff" "develop.ini") do (
				if exist "%sRootFolder%\%%~i\%%~j" (
					echo 	File [%%~j] found in folder [%%~i].
				) else (
					echo 	File [%%~j] not found in folder [%%~i].
				)
			)
		) else (
			echo Folder [%%~i] not found.
		)
	)
) else (
	echo Can't find root folder [%sRootFolder%].
)

endlocal
exit /b 0


Цитата feAre:
echo В ПАПКЕ "C" ВСЁ НА МЕСТЕ. »
Вместо этого я бы просто не выводил имена файлов и папок, которые «на месте». Это проще.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:20, 16-11-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Кстати да, так лучше.
Лучше просто писать echo при нахождении ошибки какой-то.

Отправлено: 16:29, 16-11-2013 | #3


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое.
Решено.

Ой, тфу, забыл дополнить, извините.

Как переделать чтобы "settings.dff" , "develop.ini" искалось только в папке "B"
а ещё "1.txt" , "2.txt" искалось только в папке C

Отправлено: 17:02, 16-11-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


feAre, огласите весь список файлов.

Отправлено: 18:45, 16-11-2013 | #5


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Папка B
Файлы: "settings.dff" , "develop.ini"

Папка C:
Файлы: "1.txt" , "2.txt"

Папка D:
Файлы: "2.png", "2.png"

Папка E:
Файлы: "5.mp3" , "6.mp3"

И в корневой папке (%sFolder%)
"crashchecker.exe" , "ccsa.ini"

Последний раз редактировалось feAre, 16-11-2013 в 19:33.


Отправлено: 19:20, 16-11-2013 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


feAre, тогда только последовательно:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder=E:\Песочница\0331

call :CheckFolderAndFiles "%sFolder%"   "crashchecker.exe" "ccsa.ini"
call :CheckFolderAndFiles "%sFolder%\B" "settings.dff"     "develop.ini" 
call :CheckFolderAndFiles "%sFolder%\C" "1.txt"            "2.txt"
call :CheckFolderAndFiles "%sFolder%\D" "2.png"            "2.png"
call :CheckFolderAndFiles "%sFolder%\E" "5.mp3"            "6.mp3"

endlocal
exit /b 0

:CheckFolderAndFiles
	setlocal enableextensions enabledelayedexpansion
	
	set sFolder=%~1
	if not exist "%sFolder%\." echo Folder [%sFolder%] not found.& goto :eof
:Repeat
	set sFile=%~2
	
	if not defined sFile goto :eof
	if not exist "%sFolder%\%sFile%" echo File [%sFile%] not found in folder [%sFolder%].
	
	shift /2
	goto :Repeat
	
	endlocal
	exit /b 0


Цитата feAre:
Папка D:
Файлы: "2.png", "2.png" »
Это как понимать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:41, 16-11-2013 | #7


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


опечатка.
хотел на три нажать, нажал на два.

Спасибо большое.

Отправлено: 19:44, 16-11-2013 | #8


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Каким-то образом появилась проблема.

Код: Выделить весь код
call :CheckFolderAndFiles "%sFolderName%\models\txd\" "intro1.txd" "intro2.txd"
ищет только %sFolderName%, а не директорию в целом.

Отправлено: 19:25, 18-11-2013 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата feAre:
ищет только %sFolderName%, а не директорию в целом. »
Вопрос не понятен. Поясните.

Отправлено: 00:15, 19-11-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка на наличие папок в директории

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Проверка на наличие файла и запуск скрипта RomanLis Скриптовые языки администрирования Windows 3 09-09-2011 12:51
CMD/BAT - Проверка на наличие процесса tazik9 Скриптовые языки администрирования Windows 0 23-01-2011 16:56
VBS/WSH/JS - [решено] Проверка на наличие файлй peretc001 Скриптовые языки администрирования Windows 2 20-01-2011 16:00
CMD/BAT - Проверка на наличие какого-то текста Magniy Скриптовые языки администрирования Windows 4 20-04-2010 18:26
[решено] Проверка на наличие пишушего привода в системе. Keeper2006 Автоматическая установка Windows 2000/XP/2003 1 03-11-2008 11:27




 
Переход