Hoe te: Het creëren van een uniek tijdelijk dossier en het bepalen van de werkende aandrijving en de weg
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
-
@Echo weg
-
:: *************************************************************************
-
:: Dit is een demonstratie van TempFile gebruik, de Subroutines van de Partij, het gebruiken
-
:: VOOR lijn om parameters, Goto te ontleden: EOF, gebruikend parameters aan
-
:: controleer de Breedsprakige of Stille uitvoering van een partijroutine, die worden
-
:: lokale folder van een milieuvariabelen en het gebruik van lang
-
:: commentaren in een partijdossier.
-
::
-
:: Gebruik:
-
::  GetRelativePath     < - Toont de essentiële output
-
::Â Â Breedsprakige GetRelativePath < - toont alle werk
-
::
-
:: Deze routine is vrij eenvoudig. Het krijgt een gewaarborgde unieke tijdelijke werkkracht
-
:: filename gebruikt het en zet dan de huidige weg in dat dossier. Het toen
-
:: gebruik voor bevel om die weg in stukken bij de dubbelpunt te breken en
-
:: zet de tweede brok in een milieuvariabele. Dat allen zouden kunnen zijn
-
:: gedaan met voor lijn die de lokale variabele ontleedt, maar anderzijds wij
-
:: geen voorbeeld hebben om een temperaturendossier zouden wij te gebruiken?
-
::
-
:: Originele Auteur - Brian Layman
-
::
-
:: GecreÃërd    - 01/APR/2006
-
:: Duur Gewijzigd - 01/APR/2006
-
:: Medewerkers: (Gezet uw naam & Initialen bij de bovenkant)
-
::Â Â Brian Layman - BL - http://www.TheCodeCave.com
-
::
-
::
-
:: Geschiedenis:
-
::  01/APR/2006 - GecreÃërd BL -
-
::
-
:: Vergunning - als dit u - Groot helpt! Het gebruik het, wijzigt het aandeel het.
-
::
-
:: Schadevergoeding -
-
::  Gebruik dit partijdossier op uw eigen risico. Ik roep slechts ingebouwde Vensters
-
::  bevelen, maar als een verandering van typo of de dienstpak beïnvloedt wat deze routine
-
::  , is het niet mijn fout. In feite, zou u enkel op dit ogenblik moeten ophouden en
-
::  om dit dossier niet in werking te stellen. Voor als het veroorzaakt dat blauwe rook worden uitgezonden van uw
-
::Â Â netwerk kaart, als het uw huisplaats aan HowToKillMyBoss.com, of als terugstelt
-
::Â Â het maakt uw zuster met haar advocaatvriend verdelen en beginnen te dateren
-
::  een caver, het is niet mijn fout. (Eigenlijk dat de laatstgenoemde zou kunnen zijn
-
::Â Â de verbetering, maar het is nog niet mijn fout.)
-
::
-
:: Schenkingen - als dit partijdossier u werkelijk uit helpt, voel vrij om $5 te maken
-
::Â Â de (vs) schenking via Paypal aan Brian@TheCodeCave.com of stuurt enkel Thank
-
::Â Â U via e-mail aan dat adres en omvat uw land van herkomst.
-
:: :: *************************************************************************
-
Â
-
:: *************************************************************************
-
: VerboseCheck
-
::Â Controle voor het Breedsprakige wachtwoord.
-
:: *************************************************************************
-
:: Zet een steun rond %1 aan val voor lege waarden en om toe te staan
-
:: koord vergelijking aan het werk
-
als NIET [%1] == [Breedsprakige] GOTO: TheWorks
-
echo
-
:: *************************************************************************
-
Â
-
:: *************************************************************************
-
: TheWarning
-
::
-
:: Normaal zou een Stille variabele één of andere info over het programma tonen
-
::Â en sta ook verscheidene manieren om een toevallige lancering te aborteren, maar dit toe
-
::Â het voorbeeld gebruikt een breedsprakig bevel om het te maken alle werk tonen.
-
::
-
:: *************************************************************************
-
De MaximumBreedsprakigheid van de echo.
-
De Klap Ctrl+Break van de echo nu om hier of enkel op te houden
-
@pause
-
Â
-
:: *************************************************************************
-
: TheWorks
-
::
-
::Â Laat de pret beginnen!
-
::
-
:: *************************************************************************
-
als NIET [%1] == [Breedsprakige] @Echo weg
-
Echo die de naam van Temperaturen produceert
-
Â
-
Â
-
Â
-
als [[Breedsprakige] Echo %1] == *************************************************************************
-
vraag: GETTEMPNAME
-
als [[Breedsprakige] Echo %1] == *************************************************************************
-
Echo.
-
De naam van de Temperaturen van de echo is %TEMPORARY_FILE%
-
Echo.
-
Is de Huidige Folder van de echo %cd%
-
Echo.
-
Weergalm weg de volgende processtroken de aandrijvingsbenoeming en opslag de nieuwe waarde
-
Â
-
:: Strook van de brief van de Aandrijving voor de serverweg
-
:: Dit impliceert één of ander buitensporig voetenwerk met een temperaturendossier en a voor verklaring.
-
vraag: GETTEMPNAME
-
als [[Breedsprakige] Echo %1] == *************************************************************************
-
:: Verstuur de huidige weg naar een temperaturendossier zodat het met VOOR /F verklaringen kan worden gebruikt
-
echo %cd%>%TEMPORARY_FILE%
-
VOOR /F „tokens=1* delims=: “ %%G (%TEMPORARY_FILE%) plaatsen BINNEN RelativePath=%%H
-
Â
-
als [[Breedsprakige] Echo %1] == *************************************************************************
-
Echo.
-
Weergalm de relatieve weg is %RelativePath%
-
Â
-
Â
-
:: *************************************************************************
-
: TheEnd
-
::
-
::Â Zo lang en dank voor alle vissen!
-
::
-
:: *************************************************************************
-
Echo.
-
pauze
-
GOTO: EOF
-
Â
-
Echo.
-
:: *************************************************************************
-
::Â De procedures van de steun
-
::
-
::Â Deze routines worden geroepen met een richtlijn van de VRAAG en GOTO: EOF
-
::Â eindigt dat de VRAAG maar niet het volledige runnen van eindigt
-
::Â partij dossier.
-
:: *************************************************************************
-
Â
-
:: *************************************************************************
-
::Â GETTEMPNAME procedure
-
:: CreÃër een tijdelijk dossier - de naam die het dossier waarborgt bestaat niet
-
::
-
::Â Winst:Â Â Â Het dossier van TEMPORARY_FILE=Temporary - naam
-
::
-
:: *************************************************************************
-
: GETTEMPNAME
-
   als niet bepaald _NEXTTEMP /a _NEXTTEMP=1 plaats
-
   : GETTEMPNAMELOOP
-
     indien bepaalde TEMPERATUREN (
-
      (plaats TEMPORARY_FILE=%TEMP%)
-
     ) anders indien bepaalde TMP (
-
      (plaats TEMPORARY_FILE=%TMP%)
-
     ) anders (plaats TEMPORARY_FILE=%SystemRoot%)
-
     plaats /a _NEXTTEMP=_NEXTTEMP * 214013 + 2531011
-
     plaats /a _T1=_NEXTTEMP ^>^> 16 ^& 0×7FFF
-
     plaats TEMPORARY_FILE=%TEMPORARY_FILE% \ ~SH%_T1%.tmp
-
     als „%TEMPORARY_FILE%“ GOTO besta: GETTEMPNAMELOOP
-
   reeks _T1=
-
GOTO: EOF
-
:: *************************************************************************















