Het hol van de Code

6 april, 2006

Hoe te: Het creëren van een uniek tijdelijk dossier en het bepalen van de werkende aandrijving en de weg

Filed onder: Partij - het 11:05 am van Brian @

Dit is een demonstratie van hoe te om een TempFile in .BAT te gebruiken of .CMD dossier. Het doel van dit voorbeeld is de relatieve weg van de huidige het werk folder te bepalen en het toe te wijzen aan een variabele.

Aangetoonde concepten:


  • Het produceren van een unieke dossiernamen

  • Creërend een temperatuur dien in, het gebruiken van de Vensters Noemend convetion, en het schrappen van het wanneer gedaan

  • Het roepen van steunsubroutines in een partijdossier

  • Het gebruiken van GOTO: EOF om te beëindigen gaat een subroutine maar niet het partijdossier weg

  • Gebruik van de bevellijn „VOOR“ routine

  • Gebruikend Variabelen met „voor /F“

  • Hoe te om de huidige folder te krijgen

  • Breedsprakige en Stille wijzen voor een partijdossier

De tijdelijke dossiers zijn ongelooflijk nuttig in partijdossiers. Wanneer gebruikt in combinatie met „voor“ lijn, kunt u wat verbazend materiaal van de bevellijn verwezenlijken.

In dit voorbeeld wijzen wij een nieuw dossier toe - noem aan de variabele TEMPORARY_FILE en voer dan de huidige werkende weg naar dat dossier uit door de variabele van het CDmilieu aan het te weergalmen:

vraag: GETTEMPNAME
echo %cd%>%TEMPORARY_FILE%

Zodra onze temperaturen heeft inhoud indienen, voor routine kan worden gebruikt om elke lijn te ontleden en een bevel met het resultaat uit te voeren. Zo, gebruiken wij voor bevel om de het werk folder te verdelen, laten zeggen het zijn „C:\WorkingDir“ in verscheidene stukken (akatekenen):

VOOR /F „tokens=1* delims=: “ %%G (%TEMPORARY_FILE%) plaatsen BINNEN RelativePath=%%H

Literaly vertellen wij het om de opstelling bij elke dubbelpunt te breken (: ), en om het eerste teken aan veranderlijke %G. toe te wijzen. De asterisk (*) wijst erop dat elk symbolisch na dat aan een nieuwe veranderlijke brief (H, I, J, en enz.) zou moeten worden toegewezen. In ons voorbeeld, onze zal %H „\ WorkingDir“ bevatten.

„Voor /F“ is werkelijk nuttigst met grotere dossiers die veelvoudige lijnen bevatten. Aangezien ons dossier slechts één lijn met twee tekenen bevat, daar op houdt het proces maar u kon, bijvoorbeeld, alle namen van dossiers in een folder (dir *.xyz /b > %TEMPORARY_FILE%), of inhoud van een registratiesleutel ontleden die naar dat dossier het gebruiken wordt uitgevoerd (REG. VRAAG [...] > %TEMPORARY_FILE%). Ik heb beide methodes in het verleden gebruikt om sommige werkelijk keurige dingen te doen die het creëren van een executible douane anders zouden kunnen geïmpliceerdg hebben. Één voordeel om het van de bevellijn te doen is dat het de registratie van al huisvuil erachter verlaten door Vensters schoon houdt wanneer u een exe in werking stelt.

Oh!

Iets die niet vaak in „voor /F“ documentatie wordt benadrukt is dat het variabelen evenals dossiers kan ontleden. Dit kon dit voorbeeld zeer optimaliseren. In plaats van het ontleden van ons dossier, zouden wij eenvoudig onze %CD variabele in citaten zetten en zouden roepen:

VOOR /F „tokens=1* delims=: “ %%G (“ %CD%“) plaatste BINNEN RelativePath=%%H

Wij zullen precies de zelfde resultaten worden en kunnen onze grootte van het partijdossier in de helft snijden! Natuurlijk, dan zouden wij geen goed voorbeeld van het gebruik van het temperaturendossier wij hebben? Zo, zullen wij het de harde manier doen.

Aldus:

http://www.thecodecave.com/downloads/batch/GetRelativePath.bat

Dos:
  1. @Echo weg
  2. :: *************************************************************************
  3. :: Dit is een demonstratie van TempFile gebruik, de Subroutines van de Partij, het gebruiken
  4. :: VOOR lijn om parameters, Goto te ontleden: EOF, gebruikend parameters aan
  5. :: controleer de Breedsprakige of Stille uitvoering van een partijroutine, die worden
  6. :: lokale folder van een milieuvariabelen en het gebruik van lang
  7. :: commentaren in een partijdossier.
  8. ::
  9. :: Gebruik:
  10. ::   GetRelativePath          < - Toont de essentiële output
  11. ::   Breedsprakige GetRelativePath < - toont alle werk
  12. ::
  13. :: Deze routine is vrij eenvoudig.  Het krijgt een gewaarborgde unieke tijdelijke werkkracht
  14. :: filename gebruikt het en zet dan de huidige weg in dat dossier. Het toen
  15. :: gebruik voor bevel om die weg in stukken bij de dubbelpunt te breken en
  16. :: zet de tweede brok in een milieuvariabele.  Dat allen zouden kunnen zijn
  17. :: gedaan met voor lijn die de lokale variabele ontleedt, maar anderzijds wij
  18. :: geen voorbeeld hebben om een temperaturendossier zouden wij te gebruiken?
  19. ::
  20. :: Originele Auteur - Brian Layman
  21. ::
  22. :: GecreÃërd       - 01/APR/2006
  23. :: Duur Gewijzigd - 01/APR/2006
  24. :: Medewerkers: (Gezet uw naam & Initialen bij de bovenkant)
  25. ::   Brian Layman - BL - http://www.TheCodeCave.com
  26. ::
  27. ::
  28. :: Geschiedenis:
  29. ::   01/APR/2006 - GecreÃërd BL -
  30. ::
  31. :: Vergunning - als dit u - Groot helpt! Het gebruik het, wijzigt het aandeel het.
  32. ::
  33. :: Schadevergoeding -
  34. ::    Gebruik dit partijdossier op uw eigen risico.  Ik roep slechts ingebouwde Vensters
  35. ::    bevelen, maar als een verandering van typo of de dienstpak beïnvloedt wat deze routine
  36. ::    , is het niet mijn fout.  In feite, zou u enkel op dit ogenblik moeten ophouden en
  37. ::    om dit dossier niet in werking te stellen.  Voor als het veroorzaakt dat blauwe rook worden uitgezonden van uw
  38. ::    netwerk kaart, als het uw huisplaats aan HowToKillMyBoss.com, of als terugstelt
  39. ::    het maakt uw zuster met haar advocaatvriend verdelen en beginnen te dateren
  40. ::    een caver, het is niet mijn fout.  (Eigenlijk dat de laatstgenoemde zou kunnen zijn
  41. ::    de verbetering, maar het is nog niet mijn fout.)
  42. ::
  43. :: Schenkingen - als dit partijdossier u werkelijk uit helpt, voel vrij om $5 te maken
  44. ::    de (vs) schenking via Paypal aan Brian@TheCodeCave.com of stuurt enkel Thank
  45. ::    U via e-mail aan dat adres en omvat uw land van herkomst.
  46. :: :: *************************************************************************
  47.  
  48. :: *************************************************************************
  49. : VerboseCheck
  50. ::  Controle voor het Breedsprakige wachtwoord.
  51. :: *************************************************************************
  52. :: Zet een steun rond %1 aan val voor lege waarden en om toe te staan
  53. :: koord vergelijking aan het werk
  54. als NIET [%1] == [Breedsprakige] GOTO: TheWorks
  55. echo
  56. :: *************************************************************************
  57.  
  58. :: *************************************************************************
  59. : TheWarning
  60. ::
  61. ::  Normaal zou een Stille variabele één of andere info over het programma tonen
  62. ::  en sta ook verscheidene manieren om een toevallige lancering te aborteren, maar dit toe
  63. ::  het voorbeeld gebruikt een breedsprakig bevel om het te maken alle werk tonen.
  64. ::
  65. :: *************************************************************************
  66. De MaximumBreedsprakigheid van de echo.
  67. De Klap Ctrl+Break van de echo nu om hier of enkel op te houden
  68. @pause
  69.  
  70. :: *************************************************************************
  71. : TheWorks
  72. ::
  73. ::  Laat de pret beginnen!
  74. ::
  75. :: *************************************************************************
  76. als NIET [%1] == [Breedsprakige] @Echo weg
  77. Echo die de naam van Temperaturen produceert
  78.  
  79.  
  80.  
  81. als [[Breedsprakige] Echo %1] == *************************************************************************
  82. vraag: GETTEMPNAME
  83. als [[Breedsprakige] Echo %1] == *************************************************************************
  84. Echo.
  85. De naam van de Temperaturen van de echo is %TEMPORARY_FILE%
  86. Echo.
  87. Is de Huidige Folder van de echo %cd%
  88. Echo.
  89. Weergalm weg de volgende processtroken de aandrijvingsbenoeming en opslag de nieuwe waarde
  90.  
  91. :: Strook van de brief van de Aandrijving voor de serverweg
  92. :: Dit impliceert één of ander buitensporig voetenwerk met een temperaturendossier en a voor verklaring.
  93. vraag: GETTEMPNAME
  94. als [[Breedsprakige] Echo %1] == *************************************************************************
  95. :: Verstuur de huidige weg naar een temperaturendossier zodat het met VOOR /F verklaringen kan worden gebruikt
  96. echo %cd%>%TEMPORARY_FILE%
  97. VOOR /F „tokens=1* delims=: “ %%G (%TEMPORARY_FILE%) plaatsen BINNEN RelativePath=%%H
  98.  
  99. als [[Breedsprakige] Echo %1] == *************************************************************************
  100. Echo.
  101. Weergalm de relatieve weg is %RelativePath%
  102.  
  103.  
  104. :: *************************************************************************
  105. : TheEnd
  106. ::
  107. ::  Zo lang en dank voor alle vissen!
  108. ::
  109. :: *************************************************************************
  110. Echo.
  111. pauze
  112. GOTO: EOF
  113.  
  114. Echo.
  115. :: *************************************************************************
  116. ::  De procedures van de steun
  117. ::
  118. ::  Deze routines worden geroepen met een richtlijn van de VRAAG en GOTO: EOF
  119. ::  eindigt dat de VRAAG maar niet het volledige runnen van eindigt
  120. ::  partij dossier.
  121. :: *************************************************************************
  122.  
  123. :: *************************************************************************
  124. ::  GETTEMPNAME procedure
  125. ::  CreÃër een tijdelijk dossier - de naam die het dossier waarborgt bestaat niet
  126. ::
  127. ::  Winst:      Het dossier van TEMPORARY_FILE=Temporary - naam
  128. ::
  129. :: *************************************************************************
  130. : GETTEMPNAME
  131.       als niet bepaald _NEXTTEMP /a _NEXTTEMP=1 plaats
  132.       : GETTEMPNAMELOOP
  133.          indien bepaalde TEMPERATUREN (
  134.             (plaats TEMPORARY_FILE=%TEMP%)
  135.          ) anders indien bepaalde TMP (
  136.             (plaats TEMPORARY_FILE=%TMP%)
  137.          ) anders (plaats TEMPORARY_FILE=%SystemRoot%)
  138.          plaats /a _NEXTTEMP=_NEXTTEMP * 214013 + 2531011
  139.          plaats /a _T1=_NEXTTEMP ^>^> 16 ^& 0×7FFF
  140.          plaats TEMPORARY_FILE=%TEMPORARY_FILE% \ ~SH%_T1%.tmp
  141.          als „%TEMPORARY_FILE%“ GOTO besta: GETTEMPNAMELOOP
  142.       reeks _T1=
  143. GOTO: EOF
  144. :: *************************************************************************

Geen Commentaren “

Geen commentaren nog.

Voer RSS voor commentaren op deze post. TrackBack URL

Verlaat een commentaar

Aangedreven door WordPress