Ne nevezzen el egy kötegfájlt úgy, mint a Windows parancsfeldolgozó belső parancsát vagy a Windows system32
könyvtárában tárolt szabványos Windows konzolalkalmazást. A @ START BAT.bat
határozottan nem jó név kötegfájlnak, mert tartalmazza a start
parancsot, szóközt tartalmaz a fájlnévben, és a @
is nagyon szokatlan a fájlnevekben, ami az oka annak, hogy sok évvel ezelőtt ezt a karaktert választották elválasztóként az e-mail címekben.
A "W:\PROJÉČŤ
és "K:\PROJÉČŤ
minden almappájában egy nem FILE.avi
FILE.avi
nevű AVI-fájl átnevezése (remélhetőleg) és az írásvédett attribútum eltávolítása elvégezhető a következő kötegkóddal a AviFileRename.bat
mappába mentve:
@echo off
call :AviFileRename "W:\PROJÉČŤ"
call :AviFileRename "K:\PROJÉČŤ"
goto :EOF
:AviFileRename
for /R %1 %%# in (*.avi) do (
if /I "%%~n#" == "FILE" (
%SystemRoot%\System32\attrib.exe -r "%%#"
) else (
ren "%%#" "FILE.avi"
%SystemRoot%\System32\attrib.exe -r "%%~dp#FILE.avi"
)
)
Nem számít, hogy a AviFileRename.bat
melyik könyvtárba van mentve ezekkel a kódsorokkal.
A használt parancsok és működésük megértéséhez nyisson meg egy parancssori ablakot, hajtsa végre a következő parancsokat, és nagyon figyelmesen olvassa el az egyes parancsokhoz megjelenő összes súgóoldalt.
attrib /?
call /?
echo /?
for /?
goto /?
if /?
ren /?
A hívás parancs általában a fő köteg feldolgozásának folytatására használható egy alkötegben, és amikor az alköteg feldolgozása befejeződött, folytassa a fő köteg feldolgozását. Részletekért olvassa el a választ: Hogyan hívhat meg kötegelt fájlt az aktuális kötegfájl szülőmappájában?
A /B
opció nélküli exit parancs azonban a teljes parancsfolyamat kilépését eredményezi, nem csak az aktuális kötegfájl feldolgozását. Részletekért olvassa el a következő választ: Windows kötegfájlban végrehajthat-e olyasmit, amely nem egy másik kötegfájl. ? És olvassa el a súgó kimenetét, amikor fut egy parancssori ablakban (exit /?
). A megoldás az, hogy a start paranccsal futtassa a kötegfájlt egy új parancsfolyamatban.
De csak használ
START "K:\PROJÉČŤ\A B1\@ START BAT.bat"
nem elég, mert
A start parancs az idézőjelben lévő első karakterláncot nem kötelező címként értelmezi – a részletekért futtassa a parancssori ablakban start /?
;
az aktuális könyvtár nincs beállítva az elindított kötegfájl könyvtárára, amint azt a K:\PROJÉČŤ\A B1
@ START BAT.bat
sorai megkövetelik.
A működő parancssor a következő lenne:
start "Processing A B1" /D"K:\PROJÉČŤ\A B1" "K:\PROJÉČŤ\A B1\@ START BAT.bat"
Ez a parancs a REM paranccsal a W:\PROJÉČŤ\A A1\@ START BAT.bat
-ba kerül sor helyett.
A paraméterek magyarázatát lásd a start /?
kimenetében:
"Processing A B1"
... az új folyamatablak címe. Lehetséges egy üres karakterlánc is, amelyet a ""
karakterlánc határoz meg. De valami, amit az ember is olvashat ablakcímként, mindig jobb, mint egy cím nélküli konzolablak. Ha a parancssorban bármilyen más paramétert dupla idézőjelekkel adunk meg, akkor meg kell adni a címet.
/D"K:\PROJÉČŤ\A B1"
... meghatározza az új parancsfolyamat munkakönyvtárát.
"K:\PROJÉČŤ\A B1\@ START BAT.bat"
... az indítandó parancs / végrehajtható / szkript ebben az esetben a @ START BAT.bat
kötegfájl a K:\PROJÉČŤ\A B1
könyvtárban.
Érdemes lehet a /D"K:\PROJÉČŤ\A B1"
után hozzáadni a /wait
start paramétert, hogy a kötegfájlt az új parancsfolyamatban futtassa, és a W:\PROJÉČŤ\A A1\@ START BAT.bat
feldolgozását mindig leállítsa, amíg az elindított kötegfájl be nem fejeződik, és a parancsfolyamat ki nem fejeződik a paranccsal. kilépést, vagy amikor a kötegfájl utolsó sorát feldolgozta a parancsfeldolgozó.
De van még egy probléma a PROJÉČŤ
mappanévvel. Nem ASCII karaktereket tartalmaz ÉČŤ
, ezért fontos, hogy a kötegfájl szerkesztésére használt szövegszerkesztőben a megfelelő kódlap legyen beállítva, különben a PROJÉČŤ
könyvtár nem található. A konzolablak kódlapja a Windows régiótól és nyelvi beállításaitól függ.
Ha egy parancssori ablakban futtatja a chcp parancsot, akkor megjelenik a parancsfolyamatokhoz meghatározott kódlap a gépén. Ezt (általában) az OEM kódlapot kell használni a szövegszerkesztőben is, nem pedig az ANSI (Windows) kódlapot, amelyet a szövegszerkesztő általában használ szövegfájlok szerkesztéséhez.
27.12.2015
start /?
-et elolvastam, és még mindig nem tudom, honnan származik a"Processing <folder>"
. Ez valami nem említett alparancs? 30.12.2015start "K:\PROJÉČŤ\A B1\@ START BAT.bat"
, és láthatja, hogy a kötegfájl futtatása helyett csak egy új konzolablak nyílik megK:\PROJÉČŤ\A B1\@ START BAT.bat
címmel. Ez az oka a"Processing A B1"
címkarakterláncnak, amely lehet""
vagy"Judge Dredd"
is. 30.12.2015CHCP 1250 > NUL 2>&1
ésSTART "<title>" /D"<folder>" /WAIT "<path>" /ABOVENORMAL
használatával megoldotta a problémámat 30.12.2015START "subfolder name is AA" /D"AA" /WAIT "AA\start bat.bat"
de nem szerencsésen 03.01.2016/D"AA"
az új parancsfolyamatAA
almappájával rendelkezik. Ebből a mappából kiindulva a"AA\start bat.bat"
új parancsfolyamat nem fog működni, mivel valószínűleg nincs többAA
almappa az aktuálisAA
mappában. Szükséged lesz:START "subfolder name is AA" /D"AA" /WAIT "start bat.bat"
. A kötegfájl vagy a teljes elérési úttal vagy az új parancsfolyamathoz munkakönyvtárként beállított könyvtárhoz viszonyított elérési úttal hivatkozik. 03.01.2016