Poate cineva spune-mi cum să fac următoarele într-un Windows batch script? (*.bat
):
Mai în detaliu, vreau sa creez un folder numit VTS
pe C:\
conduce, dar numai în cazul în care dosarul nu't există deja. Eu nu't doriți să suprascrieți conținutul folderului dacă acesta există deja, iar lotul este executat.
Utilizați doar acest lucru: dacă nu există "C:\VTS\" mkdir C:\VTS` se va crea un director doar în cazul în care dosarul nu există.
Rețineți că această existență test va întoarce true numai dacă VTS există și este un director. Dacă nu este acolo, sau e ca un fișier, mkdir va rula, și ar trebui să cauzeze o eroare. S-ar putea să doriți să verificați pentru a vedea dacă VTS există ca un fișier la fel de bine.
if exist C:\VTS\NUL echo "Folder already exists"
if not exist C:\VTS\NUL echo "Folder does not exist"
A se vedea, de asemenea, https://support.microsoft.com/en-us/kb/65994
(Update 7 Martie 2018; Microsoft articol este jos, arhiva pe https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994 )
Suna mkdir C:\VTS indiferent de ce. Va fi un simplu raport care subdirectorul există deja.
Edit: Ca altii s-au remarcat, acest lucru setați ERRORLEVEL % dacă la dosar există deja. Dacă lot (sau orice procese de asteptare) nu't grijă despre nivelul eroare, această metodă funcționează bine. Deoarece întrebarea a făcut nici o mențiune de a evita eroarea nivel, acest răspuns este perfect valabil. Acesta îndeplinește nevoile de creare folder, dacă nu't există, și nu't suprascrie conținutul unui folder existent. În caz contrar, urma Martin Schapendonk's a răspunde.
mkdir C:\VTS 2> NUL
creați un folder numit VTS și ieșire
, Un subdirector sau fișier de TEST există deja " la " NUL`.
sau
(C:&(mkdir "C:\VTS" 2> NUL))&
schimba litera de unitate a C:
, mkdir
, eroare de ieșire să NUL
și rulați următoarea comandă.
Eu folosesc acest mod, ar trebui să pune un backslash la sfârșitul numele directorului pentru a evita acel loc există într-un fișier fără extensie cu același nume ca directorul specificat, nu utilizați niciodată "C:\VTS" pentru că poate există un fișier cu numele "VTS" salvate în "C:" partiție, modul corect este de a utiliza "C:\VTS\", a verifica afară de backslash după VTS, deci este corect.
@echo off
@break off
@title Create folder with batch but only if it doesn't already exist - D3F4ULT
@color 0a
@cls
setlocal EnableDelayedExpansion
if not exist "C:\VTS\" (
mkdir "C:\VTS\"
if "!errorlevel!" EQU "0" (
echo Folder created successfully
) else (
echo Error while creating folder
)
) else (
echo Folder already exists
)
pause
exit
am creat acest pentru script-ul meu folosesc în munca mea pentru eyebeam.
:CREATES A CHECK VARIABLE
set lookup=0
:CHECKS IF THE FOLDER ALREADY EXIST"
IF EXIST "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\" (set lookup=1)
:IF CHECK is still 0 which means does not exist. It creates the folder
IF %lookup%==0 START "" mkdir "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\"
Încercați acest lucru
ROBOCOPY C:\Users\ADMIN\Pictures c:%data:~4,2%%data:~7,2%%data:~10,4% /MOV
Acest lot va face un folder nou și a stabilit numele său ca data curentă. (03222013) Apoi se va muta fișiere în C:\Users\ADMIN\Pictures dosarul pentru care nou-create folder.
Dacă astăzi este 22 Martie 2013....
Toate fișierele în C:\Users\ADMIN\Picturesva fi mutat într-un folder numit
03222013`.
Numai fișierele în C:\Users\ADMIN\Picturesva fi mutat. Orice folder în C:\Users\ADMIN\Pictures
nu va fi atins.