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

Показать сообщение отдельно

Ветеран


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

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


Из письма в ПМ:
Цитата ConMan:
…если не затруднит, напиши комментарии пожалуйста к коду, который ты мне написала: http://forum.oszone.net/thread-201444.html.
Не затруднит.

Проверяем, был ли вызван пакетный файл с аргументом или без. Для этого:

1. Присваиваем переменной окружения «sName» первый аргумент пакетного файла:
Код: Выделить весь код
set sName=%~1
Если пакетный файл был вызван без аргумента (т.е. «%~1» — пусто), то команда, наоборот, удалит переменную «sName».

2. Теперь проверяем, определена ли переменная окружения «sName»:
Код: Выделить весь код
if not defined sName …
И, если — нет, выводим сообщение об использовании пакетного файла и завершаем его работу:
Код: Выделить весь код
…echo Usage: %~nx0 ^<filename^>& exit /b 1
«%~nx0» — расширяет стандартную переменную окружения «%0» (имя пакетного файла) до имени («n») и расширения («x») (читаем справку «call /?»).
Символы перенаправления «<» и «>» для вывода экранируем с помощью «^».

Код: Выделить весь код
for /f "usebackq skip=1" %%i in (
	`wmic.exe LogicalDisk WHERE "DriveType='3'" GET Caption`
) do …
«wmic.exe LogicalDisk WHERE "DriveType='3'" GET Caption» выводит информацию о буквах («Caption») разделов («LogicalDisk») жёстких несъемных дисков («DriveType='3'»), наподобие:
Код: Выделить весь код
Caption
C:
D:
E:
F:
H:
разбор которой мы делаем с помощью «for /f».

В команде «wmic.exe» используются как одинарные, так и двойные кавычки. Посему используем новую семантику обработки строки: «usebackq», а саму команду заключаем в обратные кавычки.

Строка заголовка «Caption» нам не нужна — отсекаем её («skip=1»). Получившиеся буквы дисков используем дальше как «%%i» в:
Код: Выделить весь код
	for /f "tokens=*" %%j in (
		'dir /b /s /a:-d "%%i\%sName%"'
	) do …
Здесь мы просто запускаем рекурсивный («/s») поиск («dir») файла («%sName%») для каждой из найденных выше букв разделов («%%i»), отсекая при этом папки («/a:-d») и оставляя в выводе только полный путь к файлу («/b»).

Далее мы запускаем Блокнот для каждого из найденных файлов:
Код: Выделить весь код
start "" "%systemroot%\System32\notepad.exe" "%%j"
Кавычки «""», указанные сразу после «start» — это пустая строка заголовка. Если не указать здесь пустые кавычки, то команда «start» воспримет в качестве заголовка строку «"%systemroot%\System32\notepad.exe"». Подробности, как обычно, в «start /?».

Примерно так.

P.S. Подобные вопросы следует задавать непосредственно в теме, ибо:
* ответ в любом случае появится там же, поскольку ограничение на размер письма в ПМ не позволяет ответить иначе, нежели в теме;
* задавая вопрос не на форуме, а одному человеку в ПМ, Вы резко сокращаете аудиторию, которая могла бы дать Вам ответ. Помимо Iska на форуме более чем достаточно участников, могущих и умеющих помочь.

P.P.S.
Цитата ConMan:
…который ты мне написала…
. Аз есмь «душа мужеска полу»: как «Никита», «Гаврила», «Илья» и т.п.

Последний раз редактировалось Iska, 17-03-2011 в 17:53.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:46, 17-03-2011 | #7