Подземелье Кода

4-ое января 2007

Вызовите развертку от Делфи, InstallShield обнаружения оборудования, C++, сценарий или побегите подсказка

Сохранено вниз: Серия, Делфи, RegEdit, WINDOWS, XP, установка - 2:04 pm Брайан @

В моем процессе раскрытия, он посмотрел как я шел обнаружить некоторые изменения в оборудовании и после этого выполнить reboot.
Я исследовал как сделать это но он поворачивает ou что мне не нужен этот Код. В подземелье он идет.

Вы можете конечно побежать «добавляете чудодей новое оборудование» вручную. Здесь линия передачи команд для того чтобы сделать как раз то:
«C:\WINDOWS\system32\rundll32.exe» C:\WINDOWS\system32\shell32.dll, Control_RunDLL «C:\WINDOWS\system32\hdwwiz.cpl», обнаруживает оборудование

Однако, что если вы хотите автоматизировать процесс.

Информация для как сделать это относительно вряд даже если страница technet о ей. Странно достаточно первая вещь я нашел был сценарием NSIS для делать это через ту программу instalation открытого источника. Странная вещь о ей что она находилась на вебсайте WinAMP (соединении).

Здесь тот Код:

КОД:
  1. Функция ScanForNewHW
  2. Alwaysoff SetPluginUnload
  3. StrCpy $1 «»
  4.  
  5. Система:: Setupapi звонока ':: ′ CM_Locate_DevNodeA (*i .r0, t r1, I r2) I .r3
  6. Система:: Setupapi звонока ':: ′ CM_Reenumerate_DevNode (r0 I, I r4) I .r5
  7.  
  8. Руководство SetPluginUnload
  9. Система:: Освободите 0
  10. FunctionEnd

Подготовлено с именем DLL, вторая вещь я нашел был сценарием экрана устанавливать (соединением) который позволил ей быть сделанным:

КОД:
  1. функция ScanForHardwareChanges ()
  2.   devInst НОМЕРА, myreturn;
  3. начните
  4.   если (UseDLL, то (^ «cfgmgr32.dll WINSYSDIR ")! = 0) после этого
  5.     MessageBox («не нагрузил Dll», СТРОГИЙ);
  6.     возвращенное ЛОЖНОЕ;
  7.   endif;
  8.   myreturn = CM_Locate_DevNodeA (&devInst, «\ 0 «, 0);
  9.   myreturn = CM_Reenumerate_DevNode (devInst, 0);
  10.   UnUseDLL (^ «cfgmgr32.dll WINSYSDIR ");
  11.   возвращенно TRUE;
  12. конец;

Подготовлено с именем DLL и возможным именем процедуры, я мог отслеживать вниз страницу поддержки Майкрософт о ей (соединение). Та страница обеспечила режим A.C. для вызывать Код. Здесь она является следующим:

C:
  1. BOOL ScanForHardwareChanges ()
  2. {
  3.     DEVINST     devInst;
  4.     CONFIGRET   состояние;
  5.    
  6.     //
  7.     // получает devnode корня.
  8.     //
  9.    
  10.     состояние = CM_Locate_DevNode (&devInst, NULL, CM_LOCATE_DEVNODE_NORMAL);
  11.    
  12.     если (состояние! = CR_SUCCESS) {
  13.         printf («CM_Locate_DevNode потерпело неудачу: %x \ n «, состояние);
  14.         возвращенное ЛОЖНОЕ;
  15.  
  16.     }
  17.    
  18.     состояние = CM_Reenumerate_DevNode (devInst, 0);
  19.    
  20.     если (состояние! = CR_SUCCESS) {
  21.         printf («CM_Reenumerate_DevNode потерпело неудачу: %x \ n «, состояние));
  22.         возвращенное ЛОЖНОЕ;
  23.     }
  24.  
  25.     возвращенно TRUE;
  26. }

Однако, я хотел сделать это в Делфи. С правильно постоянн именами, я мог найти 2 справки к этому режиму. Проект Делфи JEDI имеет a обеспечивает режим для нагружать DLL который позволяет эти быть позвоненным и или кто-то (соединение) Код переведенного Майкрософта в режим для просматривать для оборудования или было теперь пойденное a, проект демонстрации JEDI который включил этот режим. Любой путь, французское место был первое одним я счесл то просмотрено для нового оборудования с Делфи.

Здесь тот Код:

ДЕЛФИ:
  1. процедура SomeProcedure;
  2.   // сперва вы потребность нагрузить модуль. 
  3.   LoadConfigManagerApi; 
  4.   // после этого вызывает перевод режима MS
  5.   ScanForHardwareChanges;
  6. конец;
  7.  
  8. // здесь перевод ScanForHardwareChanges
  9. функция ScanForHardwareChanges: булевско;
  10. var
  11.   dev: DEVINST;
  12.   состояние: CONFIGRET;
  13. начните
  14.  
  15.   состояние: = CM_Locate_DevNode (dev,», CM_LOCATE_DEVNODE_NORMAL);
  16.  
  17.   если (<> CR_SUCCESS состояния) после этого
  18.   начните
  19.     результат: = ЛОЖНО;
  20.     выход;
  21.   конец;
  22.  
  23.   состояние: = CM_Reenumerate_DevNode (dev, 0);
  24.  
  25.   если (<> CR_SUCCESS состояния) после этого
  26.   начните
  27.     результат: = ЛОЖНО;
  28.     выход;
  29.   конец;
  30.   Результат: = TRUE;
  31. конец;

Что режим был выбран вверх на русском месте (соединении) и был доработан для того чтобы быть независимым архивов JEDI. Однако, оба из этих режимов включают путь больше информации чем необходим.

Процесс действительно просто.
1. Нагрузите DLL
2. Получите расположение 2 методов вам.
3. Вызовите их (используя соотвествующие константы
4. Расгрузите все.

Я писал мой собственный режим Делфи который делает вс то и не имеет никакой экстренный волочат багаж, котор (снадобье?) вдоль для езды.

Мое неразъемное разрешение:

ДЕЛФИ:
  1. {******************************************************************************
  2.   ScanForHardwareChanges
  3.   Брайан Неспециалистом на TheCodeCave.com
  4. ******************************************************************************}
  5. функция ScanForHardwareChanges: Булевско;
  6. const
  7.   CFGMGR32_DLL                 = `cfgmgr32.dll';
  8.   CM_LOCATE_DEVNODE_NAME       = CM_Locate_DevNodeA'; `
  9.   CM_REENUMERATE_DEVNODE_NAME = CM_Reenumerate_DevNode'; `
  10.   CM_LOCATE_DEVNODE_NORMAL     = $00000000;
  11.   CR_SUCCESS                   = $00000000;
  12. var
  13.    DeviceNode: DWord;
  14.    HCfgMgr: Т-образная рукоятка;
  15.    CM_Locate_DevNode: функция (dnDevInst var: DWord; pDeviceID: PAnsiChar;
  16.                                ulFlags: ULONG): DWord; stdcall;
  17.    CM_Reenumerate_DevNode: функция (dnDevInst: DWord; ulFlags: ULong): DWord; stdcall;
  18. начните // ScanForHardwareChanges
  19.   Результат: = ЛОЖНО;
  20.   HCfgMgr: = LoadLibrary (CFGMGR32_DLL);
  21.   если (HCfgMgr <32), то
  22.   после этого MessageDlg (ошибка `: не смогл найти mtError менеджера DLL', конфигурации, [mbOk], 0)
  23.   еще начните
  24.     попытка
  25.       CM_Locate_DevNode: = GetProcAddress (HCfgMgr, CM_LOCATE_DEVNODE_NAME);
  26.       CM_Reenumerate_DevNode: = GetProcAddress (HCfgMgr, CM_REENUMERATE_DEVNODE_NAME);
  27.       если (CM_Locate_DevNode (DeviceNode, НОЛЬ, CM_LOCATE_DEVNODE_NORMAL) = CR_SUCCESS), то
  28.       после этого результат: = (CM_Reenumerate_DevNode (DeviceNode, 0) = CR_SUCCESS);
  29.     окончательно // оборачивает вверх
  30.       FreeLibrary (HCfgMgr);
  31.     конец;    попытка ///окончательно
  32.   конец;
  33. конец// ScanForHardwareChanges

Как тантьема, здесь совмещено в проект которому развертки для нового оборудования и после этого reboots компьютер.
(больше…)

2-ое июня 2006

Скопируйте к Clipboard в HTML

Сохранено вниз: Серия, HTML - 12:47 am Брайан @

или подвергли действию blogging скорости, котор…
или «экземпляр как соединение текста» и «экземпляр как инструменты Blogging соединение изображения» объяснили.

Обычно когда я вывешиваю что-то техническое, я включаю детальное бессвязное explaniation как он делает чего он делает. В экземпляр столбе «как соединение текста» и «экземпляр как соединение изображения» Blogging оборудуют» меня создали командное файло которое сделало некоторое опрятное вещество. Но я не дал полное explaination деталей. Теперь я буду.

Командное файло сделало следующее опрятное вещество…
1. Используемые относящие к окружающей среде перемеююые для того чтобы создать архивы HTML в стандартной директории Windows
2. Динамически добавьте входы шнура и регистратуры DWord
3. Продемонстрировано добавляющ детали меню к Maxthon & исследователю интернета (несчастливо эти не показывают вверх в FF или опере.)
4. Показанные различные смыслы основанные на что было выбрано.
5. Запустил другое окно IE которое не производит эффект выход но делает отростчатую информацию выбранную в первом.
6. Продемонстрировано как скопировать источник HTML к буферу затира через HTML и яваскрипт.:
7. Скопированный текст к clipboard, форматируя его в HTML

Не неудача для малого командного файла.

Так, здесь как волшебство было сделано…

Во-первых, легкое вещество. Командное файло создает 2 архива текста. То сделано используя символ redirection (aka выход для того чтобы хранить символ) который > (aka большой чем знак). Большой чем знак прилагает показанные результаты сразу к архиву. 2 больших thans в рядке причиняют архив быть воссозданным. Я использую команду отголоска вторить (идет диаграмма) тексту до 2 архива HTML я буду создаваться. В виду того что я использую >> в первой линии, те архивы всегда будут воссозданы если командное файло бежится снова.

Потому что HTML также использует символы GT и лт, их необходимо обозначить как буквальные символы. То сделано с ^ символа carot. Thusly

DOS:
  1. отголосок ^<HTML^>>%windir% \ паутина \ copytextaslink.htm
  2. вторьте ^<SCRIPT LANGUAGE= " яваскрипту " defer^>>>%windir% \ паутина \ copytextaslink.htm
  3. .

Результат в архиве HTML смотрит как это:

HTML:
  1. Defer> «яваскрипта» <SCRIPT LANGUAGE=

Серия фактически создает 2 архива HTML. Одно для регулировать текст который выбран. И другие для регулировать будучи выбиранным изображение.

Препятствуйте нам первый взгляд на версии текста. Она очень коротка:

Яваскрипт:
  1. <HTML>
  2. Defer> «яваскрипта» <SCRIPT LANGUAGE=
  3. parentwin var = external.menuArguments;
  4. var doc = parentwin.document;
  5. sel var = doc.selection;
  6. rng var = sel.createRange ();
  7. str var = новый шнур (rng.text);
  8. window.clipboardData.setData (&lt ``Text'; href= " '+ parentwin.location + `«> ' + &lt str + `; /a>');
  9. </SCRIPT>
  10. </HTML>

По мере того как вы можете увидеть, большое часть архива яваскрипт. Вторая линия ясно объявляет его так. Однако, вместо класть Language=» яваскрипт» (которое путь старой школы делать вещи и как я выучил первоначально), я должен определить его как тип MIME как это Type=» текст/яваскрипт» конечный результат это же, тем ме менее окончательно старый вариант языка будет упаден.

Другой вариант что вы не могли быть знакомы с флаг откладывать. Это оптимизатор времени загрузки браузера. Оно говорит браузеру что содержание сценария не произведет эффект план страницы и поэтому браузер может продолжать нарисовать страницу.

Процесс также довольно легок для того чтобы последовать за потому что он использует технологию DOM Майкрософта. DOM предметный модуль документа и позволяют IE отрегулировать все страницы паутины если было ориентированным предметом -. Вы можете снабдить ссылками документ и различные части/разделения любой страницы паутины. И то позволяет вам сразу достигнуть свойств или методов этих предметов.

Так чего Код вышеуказанный делает просит документ в окне родителя (одном в котором вы щелкнутое правое). Оно после этого просит настоящий выбор (если любой). Оно после этого получает настоящий выбор по мере того как текст и после этого просит предмет clibboard для настоящего окна. На тот этап просто звонок к SetData и выбранный текст добавлен (с немного добавлений) к clippboard. Нет очень больше чем то. Одна вещь которая должна быть замечена что тип данных в clibboard необходимо определить, в этот случай, как текст. Вы можете прочитать больше о других типах данных которые доска clib может отрегулировать в моей статье о манипуляции Clipboard с Делфи ЗДЕСЬ:

Второй архив продолжает много такой же путь за исключением того, что он идет более далее в DOM и retreives высота и ширина первоначально изображения так, что наклеивать бирки в вашем блоге сможет включить ту информацию (наиболее специфическиспецифическ, коэффициент сжатия.

Яваскрипт:
  1. <HTML>
  2. Defer> «яваскрипта» <SCRIPT LANGUAGE=
  3. parentwin var = external.menuArguments;
  4. var doc = parentwin.document;
  5. var w;
  6. var h;
  7. sel var = doc.selection;
  8. rng var = sel.createRange ();
  9. str var = новый шнур (rng.text);
  10. если (IMG == parentwin.event.srcElement.tagName «")
  11. {
  12.     h = parentwin.event.srcElement.height;
  13.     w = parentwin.event.srcElement.width;
  14.     window.clipboardData.setData (&lt ``Text'; `href= " '+ >&lt parentwin.location + «; ``src= img» '+ parentwin.event.srcElement.href +» ширина = «'+ высота w +» = «'+ щелчок» alt= " h + `, котор нужно пойти к первоначально месту. «/>&lt; /a>');
  15. }
  16. еще
  17.     сигнал тревога («несовместимый элемент. Выберите или как раз изображение или как раз text.");
  18. </SCRIPT>
  19. </HTML>

То оно для HTML. Единственная выйденная вещь создать несколько пуски для того чтобы активировать те 2 архива. То сделано через регистратуру.

Исследователь интернета читает через регистратуру каждый раз он хлопает вверх меню. Он сперва решает что щелкнуто и после этого смотрит входы регистратуры под HKey_CurrentUser \ програмным обеспечением \ Майкрософт \ исследователем интернета \ MenuExt \ всеми деталями меню которые сопрягают тип выбора. MSDN имеет полную статью которая объясняет это подробно ЗДЕСЬ, однако, следующая таблица вероятно все вам:

Смысл Значение
Значение по умолчанию 0×1
Изображения 0×2
Управление 0×4
Таблицы 0×8
Выбор текста 0×10
Анкер 0×20

Так, последний шаг процесса направить текст к HTML обработки текста и источник бирки img к архиву текста изображения.

То сделано в этих 2 линиях…

DOS:
  1. reg ДОБАВЛЯЕТ «HKCU \ програмное обеспечение \ Майкрософт \ исследователь интернета \ MenuExt \ изображение экземпляра как Lin&k» /ve /t REG_SZ /d «%WINDIR% \ паутина \ copyimageaslink.htm» /f
  2. reg ДОБАВЛЯЕТ «HKCU \ програмное обеспечение \ Майкрософт \ исследователь интернета \ MenuExt \ изображение экземпляра как смыслы /t REG_DWORD /d 2 /f Lin&k» /v
  3. .

То оно! Вы получаете вашу полную прогулку до конца! Все вопросы?

26-ое мая 2006

«Скопируйте как соединение текста» и «скопируйте как инструменты Blogging соединение изображения»

Сохранено вниз: Серия, HTML - 7:10 pm Брайан @

Джастин JustInsomnia имело отличную идею для FireFox заткнуть в:

Я хочу мочь скопировать цитату и свой URL в тоже время, без так много как думаю о ем. Для того чтобы сделать так, я написал мое первое выдвижение Firefox, которое я выбирал назвать несколько homely, копирую как соединение HTML.

Так он создал экземпляр по мере того как соединение HTML для Firefox и великодушно, котор делят его момент с абонентами wp-хакеров .

Вставляемые взгляды хорошие и он сделали действительно хорошую работу документируя его (ЭТО РЕДКО!):

Щелкните для того чтобы пойти к первоначально месту.

Я должен сказать что в виду того что я начинал используя этот метод, он довольно вкладчик времени. Это была отличной идеей. Воодушевляно! Так, если вы имеете FireFox, то пожалуйста возглавьте дальше сверх там и получите тот plug-in!

Ah, но здесь муха в мази и песке в моих… носках: Firefox вставляемое не будет работать для Maxthon!!!! (Щелкните для того чтобы пойти к первоначально месту.) или исследователь интернета!

Вы видите, Firefox как раз не делаете его для меня. Щелкните для того чтобы пойти к первоначально месту. Опера приходит darn близко к быть права, но я люблю экстренные характеристики практичности в Maxthon.

Так, я думал… Hey… Я смог сделать то для Maxthon и IE И я смогли сделать его все от командного файла!

Так, здесь оно…

Побегите это командное файло и вы установите на вашу систему, 2 новые детали меню. Когда вы выделите текст, вы будете иметь вариант «, котор нужно скопировать как соединение» и когда изображение справедливо будет щелкнуто, вы получат, что вариант «скопировали изображение как соединение». Многообещающе я выбирал hotkeys которые будут работать наилучшим образом для вас… Если не, вы можете изменить их в RegEdit на HKEY_CURRENT_USER \ програмном обеспечении \ Майкрософт \ исследователе \ MenuExt интернета \, то

BTW КАЖДЫЕ изображение и соединение до этого пункта в этом столбе был создан используя этот инструмент. Человек, хорошая идея Джастин!

Также - если вы находите, то что IE пробуждает вас прося позволения раскрыть соединения, пожалуйста вывесьте комментарий и я покажу как зафиксировать то. Я получал то сообщение на других вещах я имею как это я создавал и умею как получить за им. Я выводил то временное решение из строя на этом компьютере и я не получаю что «вы конечно» сообщение. Так эти детали меню должны быть безопасны. ТАКЖЕ, некоторые всплывающие блокаторы могут преградить эти детали. Вы могли добавить localhost как место которое позволено показать popups в вашем определенном всплывающем блокаторе. Препятствуйте мне знать если вы имеете любые проблемы.

Здесь загрузка: http://www.TheCodeCave.com/downloads/batch/AddCopyAsLink.bat

Здесь источник:

DOS:
  1. @echo
  2. :: Детали меню соединение инструментов «экземпляр * как» в IE и Maxthon
  3. :: Написано Брайан Неспециалистом
  4. :: Навестиньте я на: http://www.TheCodeCave.com
  5. :: Версия 0.1
  6. :: Url новой версии: http://www.thecodecave.com/?p=152
  7. :: Воодушевляно Firefox Plubin Джастин
  8. :: Найдено на: http://justinsomnia.org/2006 /05 /copy-as-html-link-for-firefox/
  9.  
  10. :: Создайте архив для текста экземпляра как соединение
  11. вторьте ^>%windir% \ паутина \ copytextaslink.htm
  12. вторьте language= " яваскрипту " >>>%windir% ^<script \ паутина \ copytextaslink.htm
  13. вторьте parentwin var = external.menuArguments; >>%windir% \ паутина \ copytextaslink.htm
  14. отголосок var doc = parentwin.document; >>%windir% \ паутина \ copytextaslink.htm
  15. sel var отголоска = doc.selection; >>%windir% \ паутина \ copytextaslink.htm
  16. rng var отголоска = sel.createRange (); >>%windir% \ паутина \ copytextaslink.htm
  17. str var отголоска = новый шнур (rng.text); >>%windir% \ паутина \ copytextaslink.htm
  18. отголосок window.clipboardData.setData (^>' + str + ``href= ^<a ``Text', " '+ parentwin.location + «^</a^>'); >>%windir% \ паутина \ copytextaslink.htm
  19. отголосок ^</SCRIPT^>>>%windir% \ паутина \ copytextaslink.htm
  20. отголосок ^</HTML^>>>%windir% \ паутина \ copytextaslink.htm
  21.  
  22. :: Создайте смысл меню.
  23. reg ДОБАВЛЯЕТ «HKCU \ програмное обеспечение \ Майкрософт \ исследователь \ MenuExt \ экземпляр Te&amp интернета; xt как соединение» /ve /t REG_SZ /d «%WINDIR% \ паутина \ copytextaslink.htm» /f
  24. reg ДОБАВЛЯЕТ «HKCU \ програмное обеспечение \ Майкрософт \ исследователь \ MenuExt \ экземпляр Te&amp интернета; xt как смыслы /t REG_DWORD /d 16 /f /v соединение»
  25.  
  26. :: Создайте архив для изображения экземпляра как соединение
  27. вторьте ^<HTML^>>%windir% \ паутина \ copyimageaslink.htm
  28. вторьте ^<SCRIPT LANGUAGE= " яваскрипту " defer^>>>%windir% \ паутина \ copyimageaslink.htm
  29. вторьте parentwin var = external.menuArguments; >>%windir% \ паутина \ copyimageaslink.htm
  30. отголосок var doc = parentwin.document; >>%windir% \ паутина \ copyimageaslink.htm
  31. отголосок var w; >>%windir% \ паутина \ copyimageaslink.htm
  32. отголосок var h; >>%windir% \ паутина \ copyimageaslink.htm
  33. sel var отголоска = doc.selection; >>%windir% \ паутина \ copyimageaslink.htm
  34. rng var отголоска = sel.createRange (); >>%windir% \ паутина \ copyimageaslink.htm
  35. str var отголоска = новый шнур (rng.text); >>%windir% \ паутина \ copyimageaslink.htm
  36. вторьте если (== «IMG» parentwin.event.srcElement.tagName) >>%windir% \ паутина \ copyimageaslink.htm
  37. вторьте {>>%windir% \ паутина \ copyimageaslink.htm
  38. отголосок    h = parentwin.event.srcElement.height; >>%windir% \ паутина \ copyimageaslink.htm
  39. отголосок    w = parentwin.event.srcElement.width; >>%windir% \ паутина \ copyimageaslink.htm
  40. отголосок    window.clipboardData.setData (`href= ^<a ``Text', " '+ «``src= ^>^<img» parentwin.location + '+ parentwin.event.srcElement.href +» ширина = «'+ высота w +» = «'+ щелчок» alt= " h + `, котор нужно пойти к первоначально месту. «/^>^</a^>'); >>%windir% \ паутина \ copyimageaslink.htm
  41. отголосок} >>%windir% \ паутина \ copyimageaslink.htm
  42. отголосок else>>%windir% \ паутина \ copyimageaslink.htm
  43. отголосок    сигнал тревога («несовместимый элемент. Выберите или как раз изображение или как раз text."); >>%windir% \ паутина \ copyimageaslink.htm
  44. отголосок ^</SCRIPT^>>>%windir% \ паутина \ copyimageaslink.htm
  45. отголосок ^</HTML^>>>%windir% \ паутина \ copyimageaslink.htm
  46.  
  47. :: Создайте смысл меню.
  48. reg ДОБАВЛЯЕТ «HKCU \ програмное обеспечение \ Майкрософт \ исследователь интернета \ MenuExt \ изображение экземпляра как Lin&amp; k» /ve /t REG_SZ /d «%WINDIR% \ паутина \ copyimageaslink.htm» /f
  49. reg ДОБАВЛЯЕТ «HKCU \ програмное обеспечение \ Майкрософт \ исследователь интернета \ MenuExt \ изображение экземпляра как Lin&amp; смыслы /t REG_DWORD /d 2 /f k» /v
  50. :: Сделано
  51. cls
  52. Отголосок.
  53. Вторьте Right-Click + «экземпляр * по мере того как характеристики соединения» были добавлены к Maxthon
  54. Вторьте и все другие браузеры основанные IE.
  55. Отголосок.
  56. Вторьте пожалуйста близкому и повторите старт всех браузеров для выполнения устанавливать.
  57. Отголосок.
  58. Отголосок благодарит вас для использования этого инструмента от TheCodeCave.com.
  59. Отголосок.
  60. Отголосок - Брайан
  61. Отголосок.
  62. Отголосок.
  63. Отголосок.
  64. перерыв

Как раз препятствуйте мне знайте если вы имеете любые вопросы…, то Он работа большая для меня!

6-ое апреля 2006

Как к: Создавать уникально временный файл и определять деятельность управляют и путь

Сохранено вниз: Серия - 11:05 am Брайан @

Это демонстрация как использовать TempFile в архиве .BAT или .CMD. Цель этого примера определить относительный путь настоящего текущего каталога и задать его к перемеююому.

Принципиальные схемы продемонстрировали:


  • Производить имена уникально архива

  • Создающ архив temp, используя Windows называя convetion, и уничтожая его делано

  • Вызывать подпрограммы поддержки в командном файле

  • Используя ПЕРЕХОД: EOF для того чтобы закончить выход подпрограмма но не командное файло

  • Польза линии передачи команд «ДЛЯ» режима

  • Используя перемеююые с «для /F»

  • Как получить текущий каталог

  • Verbose и тихие режимы для командного файла

Временные файлы неимоверно полезны в командных файлах. При использовании в комбинации с «для» петли, вы можете выполнить некоторое изумительное вещество от линии передачи команд.

В этом примере мы задаем новый архив - имя к TEMPORARY_FILE переменному и после этого ехпортируем настоящий работая путь к тому архиву путем вторить cd перемеююому окружающей среды к ей:

звонок: GETTEMPNAME
отголосок %cd%>%TEMPORARY_FILE%

Как только наш архив temp имеет содержание, для режима смогите быть использовано для того чтобы parse каждая линия и выполнять команду с результатом. Так, мы используем для команды разделить текущий каталог, препятствуем для того чтобы сказать его «C:\WorkingDir» в несколько частей (знаки внимания aka):

ДЛЯ delims= tokens=1* /F «: » %%G ВНУТРИ (%TEMPORARY_FILE%) устанавливают RelativePath=%%H

Literaly мы говорим, что оно ломает компановку на каждом двоеточии (: ), и задать первый знак внимания к переменному %G. Звездочка (*) показывает что каждый знак внимания позже который должен быть задан к новому переменному письму (h, I, j, и etc.). В нашем примере, наше %H будет содержать «\ WorkingDir».

«Для /F» действительно само полезно с более большими архивами содержать множественные линии. В виду того что наш архив содержит только одну линию с 2 знаками внимания, отростчатые стопы там но вы смогли, например, parse все имена архивов в директории (dir *.xyz /b > %TEMPORARY_FILE%), или содержание ключа регистратуры ехпортированное к тому архиву используя (ВОПРОС REG [...] > %TEMPORARY_FILE%). Я использовал оба из этих методов в прошлом для того чтобы сделать некоторые действительно опрятные вещи которые могли в противном случае включить создать таможню executible. Одно преимущество делать его от линии передачи команд что оно держит регистратуру чистой всего отброса выйденного позади Windows в любое время вы бежите exe.

Oh!

Что-то которое часто не подчеркнуто в «для документации /F» что она может parse перемеююые также, как архивы. Это смогло значительно оптимизировать этот пример. Вместо parsing наш архив, мы просто положили бы нашу перемеююый %CD в цитаты и вызвали бы:

ДЛЯ delims= tokens=1* /F «: » %%G В ("%CD%") устанавливают RelativePath=%%H

Мы получим точно такие же результаты и можем отрезать наш размер командного файла в половине! Конечно, после этого мы не имели бы хороший пример использования архива temp и мы? Так, мы сделаем его трудный путь.

Таким образом:
(больше…)

22-ое марта 2006

Командное файло для того чтобы найти первый сопрягая архив в путе поиска…

Сохранено вниз: Серия - 12:49 am Брайан @

Это другой малый app я написал для кто-то для использования на форуме ZTree.

Это одно командное файло DOS которое находит архивы в вашем путе поиска которые сопрягают критерии вы проходите к ему.
Например вы смогли напечатать «SearchPath на машинке WPFile.Doc» и оно возвратило бы положение того архива в вашем путе поиска. Если вы печатаете внутри просто «SearchPath на машинке MyApp», то оно сделает поиск для всех executible архивов как определено перемеююым PATHEXT относящой к окружающей среде.

Я нашел эта программа весьма полезная с тех пор, когда щелкая Start>Run и вход НИКАКИЕ (было предположено к autocomplete к блокноту) побежали программа которая я не смог найти везде. SearchPath нашло оно в директории сети.

Принципиальные схемы продемонстрировали:
Подпрограммы командного файла - используйте ЗВОНОК для того чтобы исполнить положение скачки в таком же командном файле если было отдельно серией
ПЕРЕХОД: EOF - Использовано для того чтобы возвратить из командного файла ИЛИ подпрограммы серии.
Для петель & достигать к перемеююым окружающей среды
Рекурсия ребенка - родитель вызывает ребенка и ребенок в свою очередь вызывает родителя который смог в свою очередь
ребенок снова.

DOS:
  1. :: *************************************************************************
  2. ::  SearchPath.Bat                                                                                            10 /31 /2005
  3. ::  Написано Брайан Неспециалистом (Capt Queeg AKA)
  4. ::  Навестиньте он на http://www.TheCodeCave.com
  5. :: 
  6. ::  Серия написанная, что показать программу которая побежалась бы когда
  7. ::  filename напечатан на машинке на запросе командй.  Как раз демонстрация для
  8. ::  Hartmut на http://www.ztw3.com/forum/forum.cgi
  9. :: 
  10. ::  Использование: SearchPath ProgramName [.EXT]
  11. :: 
  12. ::  История:
  13. ::     10 /31 созданное /2005 - BL -
  14. ::     11 /01 /2005 - BL -, котор извлекли использование архива Temp
  15. :: 
  16. :: *************************************************************************
  17. @echo
  18. :: Вс это о вниз до одна подпрограмма которая устанавливает перемеююый
  19. :: такое же имя.
  20. звонок: SearchedFilePath %1
  21.  
  22. :: Если никакая программа не найдена, то скажите так.
  23. если отголосок "" == «%SearchedFilePath% " там никакая сопрягая программа в путе поиска
  24.  
  25. :: Если программа была найдена, то вторьте своему имени.
  26. если отголосок %SearchedFilePath% "" == НЕ «%SearchedFilePath% "
  27.  
  28. :: Освободите вне нашу перемеююый temp
  29. установите SearchedFilePath=
  30.  
  31. :: Прекращено
  32. ПЕРЕХОД: EOF
  33. :: *************************************************************************
  34.  
  35.  
  36. :: *************************************************************************
  37. ::  Процедуры по поддержки
  38. ::
  39. ::  Эти режимы вызваны с ЗВОНОКОМ директивным и ПЕРЕХОД: EOF
  40. ::  прекращает тот ЗВОНОК но не прекращает весь ход
  41. ::  командное файло.
  42. :: *************************************************************************
  43.  
  44. :: *************************************************************************
  45. : SearchedFilePath
  46. ::  Возвращает полный путь к пройденному архиву в searchpath
  47. ::
  48. ::  Возвращает пробел если не найдено.
  49. ::
  50. :: *************************************************************************
  51. : установите SearchedFilePath= 
  52.   :: Установите автоматически принимаемое значение для того чтобы прикрыть.
  53.   установите SearchedFilePath=
  54.  
  55.   :: Если никакая ручка выдвижения оно
  56.   если звонок "" == «%~x1 ":, тоSearchWithExtensions %1&GOTO: EOF
  57.  
  58.   :: Там никакое выдвижение, оно пусто?
  59.   если "" == «%1 " ПЕРЕХОД:, тоEOF
  60.  
  61.   :: Так, мы имеем выдвижение.  То значит что мы может сделать просто поиск.
  62.   :: %~dp$PATH: 1 автоматически ищет путь для нас.  Это a
  63.   :: комплект перемеююого командой звонока.
  64.   установите SearchedFilePath=%~dp$PATH: 1%1
  65.   если == " %1» «%SearchedFilePath% " установило SearchedFilePath=&GOTO:, тоEOF
  66.   ПЕРЕХОД: EOF
  67. :: *************************************************************************