Sto cercando di creare il percorso di un file temporaneo da utilizzare in un file batch.Come creare un percorso di file temporaneo univoco nel prompt dei comandi senza strumenti esterni?
Ci sono le variabili di ambiente %TEMP%
e %TMP%
per ottenere la directory temporanea per l'utente corrente. Ma come costruire un nome di file che sicuramente non esiste ancora?
Naturalmente posso usare il qualcosa variabile incorporata %RANDOM%
e creare come bat~%RANDOM%.tmp
, ma questo metodo non non garantisce che il file è attualmente inesistente (o che sarà creato per coincidenza da un'altra applicazione, prima che io prima creala su disco e scrivici), anche se tutto questo è molto improbabile.
so ho potuto solo ridurre la probabilità di tali collisioni aggiungendo anche %DATE%
/%TIME%
, o semplicemente aggiungendo più %RANDOM%
casi, ma questo non è quello che voglio ...
Nota: Secondo this post, c'è un metodo in .NET (Path.GetTempFileName()
) che fa esattamente quello che sto chiedendo (oltre al linguaggio di programmazione sbagliato ovviamente).
Il problema è,% RANDOM% viene generato come una funzione dall'ora corrente (in secondi), il che significa che il codice sarà in un ciclo per 1 secondo quando è necessario un secondo file. – Sergei
@Sergei Nope. In esecuzione ad es. 'echo% time% &> NUL (per/l% G in (1,1,120) do @call d: \ bat \ SO \7998.bat) & cmd/V/C" echo! time! "& dir D: \ test \ afolderpath \ withoutspaces | find "File (s)" 'mostra che ** tutti i file **' 720' (= 6 * 120) vengono creati durante cca 3,5 secondi, ripetutamente (ora ho file cca 1220 di un modello di modello dato in ogni directory di test). Leggi https://ss64.com/nt/syntax-random.html – JosefZ
Quando eseguo lo stesso comando molto velocemente ottengo questo http://imgur.com/a/6SVmu – Sergei