Wat is de huidige map in een batchbestand?

Ik wil een paar batchbestanden maken om een programma te automatiseren.

Mijn vraag is wanneer ik het batchbestand maak, wat is de huidige map?
Is het de map waar het bestand zich bevindt of is het dezelfde map die in de opdrachtprompt verschijnt, of iets anders?


Antwoord 1, autoriteit 100%

Vanuit uw batchbestand:

  • %cd%verwijst naar de huidige werkmap(variabele )
  • %~dp0verwijst naar het volledige pad naar de map van het batchbestand (statisch)
  • %~dpnx0en %~f0verwijzen beide naar het volledige pad naar de batchdirectory en de bestandsnaam (statisch).

Zie ook: Wat betekent %~dp0, en hoe werkt het?


Antwoord 2, autoriteit 3%

Het meestalis de directory van waaruit het batchbestand wordt gestart, maar als u het batchbestand start vanaf een snelkoppeling, kan een andere startdirectory worden opgegeven. Ook als je in cmd zit en je huidige directory is c:\dir3, kun je het batchbestand nog steeds starten met c:\dir1\dir2\batch.batin dat geval is de huidige map c:\dir3.


Antwoord 3

In een batchbestand is %cd% het meest gebruikte commando voor de huidige directory, hoewel je je eigen variabele kunt instellen:

set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)

Stel dat u Myprog.exe wilde openen. Als het in dezelfde map stond, zou je het commando gebruiken:

start %mypath%\Myprog.exe

Dat zou Myprog openen vanuit de huidige map.

De andere optie is om een ​​map in C: Automateprograms genoemd. Vervolgens brengt u uw bestanden naar die map over, dan kunt u ze openen met behulp van de volgende opdracht:

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"

4

Zeg dat u een bestand opent in uw huidige map. Het commando zou zijn:

start %cd%\filename.filetype

Ik hoop dat ik je vraag heb beantwoord.


5

Het is de map van waarmee u de opdracht uitvoert om uw batchbestand uit te voeren.

Zoals vermeld in de bovenstaande antwoorden, kunt u de onderstaande opdracht toevoegen aan uw script om te verifiëren:

> set current_dir=%cd%
> echo %current_dir%  

6

%__CD__%, %CD%, %=C:%

Er is ook een andere dynamische variabele %__CD__%die wijst naar de huidige directory, maar gelijk als %CD%Het heeft een backslash aan het einde.
Dit kan handig zijn als u bestanden aan de huidige map wilt toevoegen.

Met %=C:%%=D:%U hebt toegang tot de laatste toegankelijke map voor de bijbehorende station. Als de variabele niet is gedefinieerd, ben je niet toegankelijk via de schijf op de huidige CMD-sessie.

en %__APPDIR__%Breidt uit naar het uitvoerbare bestand dat het huidige script a.k.a.a. cmd.exemap.


7

gewoon mijn 2 cent.
De volgende opdracht mislukt als deze wordt aangeroepen vanuit een batchbestand (Windows 7) dat op een pendrive is geplaatst:

%SystemRoot%\System32\xcopy.exe /e /i "%cd%Ala" "C:\KS\Ala\"

Maar dit doet het werk:

%SystemRoot%\System32\xcopy.exe /e /i "%~dp0Ala" "C:\KS\Ala\"

Antwoord 8

Uw bat-bestand zou zich in de map moeten bevinden waarin het bat-bestand zich bevindt/was toen u het opende. Als u het echter in een andere map wilt plaatsen, kunt u dit doen met cd [whatever directory]

Other episodes