Opdracht om een ​​.bat-bestand uit te voeren

Ik probeer mijn Visual Studio-buildscript een .bat-bestand te laten uitvoeren dat iets belangrijks doet.

Dit is wat ik nu wil doen:

cd "F:\- Big Packets -\kitterengine\Common\" Template.bat

Maar het werkt niet.

Ik moet dit doen om het te laten werken:

cd "F:\- Big Packets -\kitterengine\Common\"
F:
Template.bat

Maar dit is vrij moeilijk toe te voegen aan het Visual Studio-script.

Hoe kan ik dit in één regel doen?


Antwoord 1, autoriteit 100%

Kan hier verwijzen naar: https://ss64.com/nt/start.html

start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat

Antwoord 2, autoriteit 96%

"F:\- Big Packets -\kitterengine\Common\Template.bat"misschien voorafgegaan door call(zie call /?). Of Cd /d "F:\- Big Packets -\kitterengine\Common\" & Template.bat.


CMD-spiekbriefje

  • Cmd.exe

  • Hulp vragen

  • Interpunctie

  • Bestanden een naam geven

  • Programma’s starten

  • Sleutels

CMD.exe

Het eerste dat u moet onthouden, is een manier om een ​​computer te bedienen. Het is de manier waarop we het deden voordat WIMP (Windows, Pictogrammen, Muis, Pop-upmenu’s) gemeengoed werd. Het dankt zijn wortels aan CPM, VMS en Unix. Het werd gebruikt om programma’s te starten en bestanden te kopiëren en te verwijderen. U kunt ook de tijd en datum wijzigen.

Voor hulp bij het starten van CMD typt u cmd /?. Je moet het beginnen met de schakelaar /kof /c, tenzij je het gewoon wilt typen.

Hulp vragen

Voor algemene hulp. Typ Helpin de opdrachtprompt. Typ voor elk commando help <command>(bijv. help dir) of <command> /?(bijv. dir /?).

Sommige commando’s hebben subcommando’s. Bijvoorbeeld schtasks /create /?.

De hulp van het NETcommando is ongebruikelijk. Het typen van net use /?is korte hulp. Typ net help usevoor volledige hulp. Hetzelfde geldt voor de root – net /?is ook korte hulp, gebruik net help.

Verwijzingen in de Help naar nieuw gedrag beschrijven wijzigingen van CMD in OS/2 en Windows NT4 naar de huidige CMD in Windows 2000 en later.

WMICis een multifunctionele opdracht. Typ wmic /?.


Interpunctie

&    seperates commands on a line.
&&    executes this command only if previous command's errorlevel is 0.
||    (not used above) executes this command only if previous command's 
errorlevel is NOT 0
>    output to a file
>>    append output to a file
<    input from a file
2> Redirects command error output to the file specified. (0 is StdInput, 1 is StdOutput, and 2 is StdError)
2>&1 Redirects command error output to the same location as command output. 
|    output of one command into the input of another command
^    escapes any of the above, including itself, if needed to be passed 
to a program
"    parameters with spaces must be enclosed in quotes
+ used with copy to concatenate files. E.G. copy file1+file2 newfile
, used with copy to indicate missing parameters. This updates the files 
modified date. E.G. copy /b file1,,
%variablename% a inbuilt or user set environmental variable
!variablename! a user set environmental variable expanded at execution 
time, turned with SelLocal EnableDelayedExpansion command
%<number> (%1) the nth command line parameter passed to a batch file. %0 
is the batchfile's name.
%* (%*) the entire command line.
%CMDCMDLINE% - expands to the original command line that invoked the
Command Processor (from set /?).
%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. 
Single % sign at command prompt and double % sign in a batch file.
\\ (\\servername\sharename\folder\file.ext) access files and folders via UNC naming.
: (win.ini:streamname) accesses an alternative steam. Also separates drive from rest of path.
. (win.ini) the LAST dot in a file path separates the name from extension
. (dir .\*.txt) the current directory
.. (cd ..) the parent directory
\\?\ (\\?\c:\windows\win.ini) When a file path is prefixed with \\?\ filename checks are turned off. 

Bestanden een naam geven

< > : " / \ | Reserved characters. May not be used in filenames.
Reserved names. These refer to devices eg, 
copy filename con 
which copies a file to the console window.
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, 
COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, 
LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
CONIN$, CONOUT$, CONERR$
--------------------------------
Maximum path length              260 characters
Maximum path length (\\?\)      32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length        255 characters

Een programma starten

Zie start /?en call /?voor hulp op alle drie de manieren.

Er zijn twee soorten Windows-programma’s – console of niet-console (deze worden GUI genoemd, zelfs als ze er geen hebben). Consoleprogramma’s worden aan de huidige console gekoppeld of Windows maakt een nieuwe console. GUI-programma’s moeten expliciet hun eigen vensters maken.

Als er geen volledig pad is opgegeven, kijkt Windows binnen

  1. De map van waaruit de toepassing is geladen.

  2. De huidige map voor het bovenliggende proces.

  3. Windows NT/2000/XP: de 32-bits Windows-systeemmap. Gebruik de
    GetSystemDirectory-functie om het pad van deze map te krijgen. De
    naam van deze map is System32.

  4. Windows NT/2000/XP: de 16-bits Windows-systeemmap. Er is geen
    functie die het pad van deze map verkrijgt, maar het is
    gezocht. De naam van deze map is Systeem.

  5. De Windows-map. Gebruik de functie GetWindowsDirectory om
    het pad van deze map.

  6. De mappen die worden vermeld in de omgevingsvariabele PATH.

Geef een programmanaam op

Dit is de standaardmanier om een ​​programma te starten.

c:\windows\notepad.exe

In een batchbestand wacht de batch tot het programma wordt afgesloten. Wanneer
typte de opdrachtprompt wacht niet op grafisch
programma’s om af te sluiten.

Als het programma een batchbestand is, wordt de besturing overgedragen en wordt de rest van het aanroepende batchbestand niet uitgevoerd.

Gebruik het Start-commando

Startstart programma’s op niet-standaard manieren.

start "" c:\windows\notepad.exe

Startstart een programma en wacht niet. Consoleprogramma’s starten in een nieuw venster. Het gebruik van de schakelaar /Bdwingt consoleprogramma’s naar hetzelfde venster, wat het hoofddoel van Start teniet doet.

Start gebruikt de grafische shell van Windows – hetzelfde als typen in WinKey + R (dialoogvenster Uitvoeren). Probeer

start shell:cache

Ook programmanamen die zijn geregistreerd onder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathskunnen ook worden ingevoerd zonder een volledig pad op te geven.

Let ook op de eerste set aanhalingstekens, indien aanwezig, MOET de titel van het venster zijn.

Gebruik Oproepopdracht

Oproep wordt gebruikt om batchbestanden te starten en te wachten tot ze zijn afgesloten en verder gaan met het huidige batchbestand.

Andere bestandsnamen

Het typen van een niet-programma bestandsnaam is hetzelfde als dubbelklikken op het bestand.


Sleutels

Ctrl + Csluit een programma af zonder het consolevenster te verlaten.

Voor andere bewerkingssleutels typt u Doskey /?.

  • ^en vcommando’s terughalen

  • ESCwist de opdrachtregel

  • F7geeft opdrachtgeschiedenis weer

  • ALT+F7wist de opdrachtgeschiedenis

  • F8zoekt opdrachtgeschiedenis

  • F9selecteert een commando op nummer

  • ALT+F10wist macrodefinities

Ook niet vermeld

  • Ctrl+ <of>Verplaatst een woord tegelijk

  • Ctrl+ BackspaceVerwijdert het vorige woord

  • HomeBegin van regel

  • EindeEinde regel

  • Ctrl+ EndVerwijdert tot einde van regel


Antwoord 3, autoriteit 32%

Er zijn veel mogelijkheden om deze taak op te lossen.

1. VOER het batchbestand UIT met het volledige pad

De gemakkelijkste oplossing is om het batchbestand uit te voerenmet het volledige pad.

"F:\- Big Packets -\kitterengine\Common\Template.bat"

Zodra het einde van het batchbestand Template.batis bereikt, is er geen terugkeer naar het vorige script als de bovenstaande opdrachtregel zich in een *.bat- of *.cmd-bestand bevindt.

De huidige map voor het batchbestand Template.batis de huidige map van het huidige proces. In het geval dat Template.batvereist dat de directory van dit batchbestand de huidige directory is, moet het batchbestand Template.batna @echo offals tweede regel de volgende opdrachtregel:

cd /D "%~dp0"

Voer in een opdrachtpromptvenster cd /?uit om de hulp van deze opdracht te krijgen met uitleg over parameter /D... verander naar de opgegeven map ook op een andere schijf .

Voer in een opdrachtpromptvenster call /?uit om de hulp van deze opdracht weer te geven die ook wordt gebruikt in 2., 4. en 5. oplossing en uitleg ook %~dp0... drive en pad van argument 0 dat de naam is van het batchbestand.

2. BEL het batchbestand met het volledige pad

Een andere oplossing is het aanroepenvan het batchbestand met het volledige pad.

call "F:\- Big Packets -\kitterengine\Common\Template.bat"

Het verschil met de eerste oplossing is dat nadat het einde van het batchbestand Template.batis bereikt, de batchverwerking wordt voortgezet in een batchscript dat deze opdrachtregel bevat.

Voor de huidige directory, lees hierboven.

3. Wijzig directory en RUN batchbestand met één opdrachtregel

Er zijn 3 operators voor het uitvoeren van meerdere opdrachten op één opdrachtregel: &, &&en ||.

Zie voor details het antwoord op Eén regel met meerdere opdrachten met Windows-batchbestand

Ik stel voor deze taak de operator &&voor.

cd /D "F:\- Big Packets -\kitterengine\Common" && Template.bat

Zoals bij de eerste oplossing is er geen terugkeer naar het huidige script als dit een *.bat- of *.cmd-bestand is en het wijzigen van de directory en voortzetting van de batchverwerking op Template.batis gelukt.

4. Wijzig directory en CALL-batchbestand met één opdrachtregel

Deze opdrachtregel verandert de directory en bij succes roepthet batchbestand op.

cd /D "F:\- Big Packets -\kitterengine\Common" && call Template.bat

Het verschil met de derde oplossing is de terugkeer naar het huidige batchscript bij het afsluiten van de verwerking van Template.bat.

5. Wijzig directory en CALL-batchbestand met behoud van de huidige omgeving met één opdrachtregel

De vier bovenstaande oplossingen veranderen de huidige map en het is niet bekend wat Template.batdoet met betrekking tot

  1. huidige map
  2. omgevingsvariabelen
  3. status van opdrachtextensies
  4. vertraagde uitbreidingsstatus

In het geval dat het belangrijk is om de omgeving van het huidige *.bat- of *.cmd-script ongewijzigd te laten door wat voor Template.batook in de omgeving verandert, is het raadzaam om setlocalen endlocal.

Voer in een opdrachtpromptvenster setlocal /?en endlocal /?uit om de hulp van deze twee commando's te krijgen. En lees het antwoord op change directory command-cd ..werkt niet in batchbestand na npm installwaarin gedetailleerder wordt uitgelegd wat deze twee commando's doen .

setlocal & cd /D "F:\- Big Packets -\kitterengine\Common" & call Template.bat & endlocal

Nu wordt er alleen &in plaats van &&gebruikt omdat het hier belangrijk is dat nadat setlocalis uitgevoerd het commando endlocalwordt eindelijk ook uitgevoerd.


EEN NOG OPMERKING

Als batchbestand Template.bathet commando exitbevat zonder parameter /Ben dit commando echt wordt uitgevoerd, is het commandoproces altijd verlaten onafhankelijk van oproephiërarchie. Zorg er dus voor dat Template.batexit /Bof goto :EOFbevat in plaats van alleen exitals er exithelemaal niet gebruikt in dit batchbestand.


Antwoord 4, autoriteit 21%

U kunt de opdracht Cmd gebruiken om het batchbestand uit te voeren.

Hier is mijn manier =>

cmd /c ""Full_Path_Of_Batch_Here.cmd" "

Meer informatie => cmd /?

LEAVE A REPLY

Please enter your comment!
Please enter your name here

20 + 4 =

Other episodes