batch-file
Differenze tra Batch (Windows) e Terminal (Linux)
Ricerca…
introduzione
Batch e bash sono abbastanza diversi. I flag batch sono indicati con un
/
, mentre i flag bash usano un -
. La capitalizzazione conta in bash, ma (quasi) per nulla in batch. I nomi delle variabili batch possono contenere spazi, i nomi delle variabili bash non possono. In definitiva, entrambi sono modi di manipolare e interagire con la riga di comando. Non sorprendentemente, vi è una quantità abbastanza grande di sovrapposizione tra le capacità dei due sistemi.
Osservazioni
-
bitsadmin
è deprecato a favore del cmdlet BITS di PowerShell ma funziona ancora da Windows 10 versione 1607 -
certutil
separa le coppie di cifre esadecimali con uno spazio, quindimd5sum
restituirà un valore di esempio did41d8cd98f00b204e9800998ecf8427e
, mentrecertutil
visualizza lo stesso valore did4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
- Per eseguire il
cd
su un'altra unità (ad esempio, da C: a D :), è necessario utilizzare l'indicatore/d
-
del
non può eliminare cartelle, usa invecerm
-
grep
è molto più potente difind
efindstr
, non è quasi corretto confrontarli;find
non ha capacità regex efindstr
ha capacità regex estremamente limitate ([az]{2}
non è una sintassi valida, ma[az][az]
è) -
for
cicli sul prompt dei comandi di Windows è possibile utilizzare solo nomi di variabili a singolo carattere; questa è l'unica volta in cui i nomi delle variabili batch sono sensibili al maiuscolo / minuscolo -
for
cicli sul prompt dei comandi utilizzare anche la forma variabile%A
anziché%A%
-for
loop negli script batch utilizzare la forma variabile%%A
-
md
crea automaticamente tutte le directory madri necessarie, mentremkdir
bisogno del flag-p
per farlo -
rem
non può essere usato come un carattere di commento in linea a meno che non sia preceduto da un&
-
::
non può essere usato come commento in linea e non deve essere usato all'interno di un blocco di codice (insieme di parentesi)
- Si noti che alcuni dei comandi di Windows come
ping
utilizza ancora-
come bandiere
Comandi batch e loro equivalenti Bash
partita | bash | Descrizione |
---|---|---|
command /? | man command | Mostra l'aiuto per il comando |
bitsadmin | wget o curl | Scarica un file remoto |
certutil -hashfile file_name MD5 | md5sum file_name | Ottiene il checksum MD5 di nome_file |
cd | pwd | Visualizza la directory corrente |
cd directory | cd directory | Cambia la directory corrente in quella specificata |
cls | clear | Cancella lo schermo |
copy | cp | Copia un file o file da un percorso di origine a un percorso di destinazione |
date | date | Visualizza la data o la imposta in base all'input dell'utente |
del | rm | Elimina un file o file |
dir | ls | visualizza un elenco di file e directory nella directory corrente |
echo | echo | Visualizza il testo sullo schermo |
exit | return | Esce da uno script o subroutine |
exit | logout | Chiude il prompt dei comandi o il terminale |
fc | diff | Confronta i contenuti di due file |
find "string" file_name | grep "string" file_name | Cerca file_name per stringa |
findstr "string" file_name | grep "string" file_name | Cerca file_name per stringa |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Fai qualcosa per ogni file in un set di file |
for /F %A in ('command') do something | `command` | Restituisce l'output di un comando |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Inizia all'inizio e conta per incrementi fino a raggiungere l' ultimo |
forfiles | find | Cerca i file che corrispondono a un determinato criterio |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Confronta due valori |
ipconfig | ifconfig | Visualizza le informazioni IP |
md | mkdir | Crea nuove cartelle |
mklink | ln -s | Crea un collegamento simbolico |
more | more | Visualizza una schermata di output alla volta |
move | mv | Sposta un file o file da un percorso di origine a un percorso di destinazione |
pause | read -p "Press any key to continue" | Mette in pausa l'esecuzione dello script fino a quando l'utente preme un pulsante |
popd | popd | Rimuove la voce superiore dallo stack di directory e passa alla nuova directory superiore |
pushd | pushd | Aggiunge la directory corrente allo stack di directory e passa alla nuova directory superiore |
ren | mv | Rinomina i file |
rem o :: | # | Commenti una riga di codice |
rd | rmdir | Rimuove le directory vuote |
rd /s | rm -rf | Rimuove le directory indipendentemente dal fatto che siano o meno vuote |
set variable=value | variable=value | Imposta il valore della variabile su valore |
set /a variable=equation | variable=$((equation)) | Esegue matematica (batch può usare solo numeri interi a 32 bit) |
set /p variable=promptstring | read -p "promptstring" variable | Ottiene l'input dell'utente e lo memorizza in variabile |
shift | shift | Sposta gli argomenti di 1 (o n se fornito) |
sort | sort | Ordina l'output in ordine alfabetico per riga |
tasklist | ps | Mostra un elenco di processi in esecuzione |
taskkill /PID processid | kill processid | Uccide il processo con processid PID |
time /t | date | Visualizza l'ora corrente |
type | cat | Visualizza il contenuto di un file |
where | which | Cerca la directory corrente e il PERCORSO per un file o comando |
whoami | id | Visualizza il nome e il gruppo dell'utente corrente |
Variabili batch e il loro equivalente Bash
partita | bash | Descrizione |
---|---|---|
%variable% | $variable | Una variabile regolare |
!variable! | $variable | Una variabile all'interno di un blocco di codice quando è attiva l' setlocal enabledelayedexpansion |
%errorlevel% o ERRORLEVEL | $? | Restituisce lo stato del comando precedente: 0 se ha successo, 1 (o qualcos'altro) se non lo è |
%1 , %2 , %3 , ecc. | $1 , $2 , $3 , ecc. | I parametri dati a uno script |
%* | $* | Tutti i parametri dati a uno script |
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow