Domanda

ho bisogno di fare un file batch in grado di copiare i file da un percorso a un altro sulla base di parametri.

Ad esempio, digitando "datecopy -m 8 c: / CopyFrom /*.* d: / CopyTo /*.*", avrebbero trovato tutti i file in C: / CopyFrom datata meno di 8 mesi di età, e copiarli d: / CopyTo -cartella. In alternativa, invece di -m per mese, potrei usare -h per un'ora o -y per l'anno.

Non è questo il programma completo, naturalmente, ma dovrebbe fatemi parlare. Grazie per eventuali suggerimenti. :)

È stato utile?

Soluzione

So che questo potrebbe non sembrare come se fosse rispondere alla tua domanda, ma salva te stesso più dolore e di angoscia di quanto si possa immaginare in questo modo in JScript o VBScript

Ultimamente sto guardando Windows PowerShell , in fondo Windows Scripting sulla velocità.
Tuttavia si può essere certi che Windows Script Host (JScript e VBScript) è già in Windows da XP in poi (possibilmente da W2k in poi).

Il mio consiglio è di non utilizzare le finestre comandi batch.

Altri suggerimenti

Supponendo che è possibile assemblare una serie di strumenti buon vecchio-unix, si prendono uno sguardo al programma di utilità find. Ha le opzioni si chiede per, e altro ancora.

find c:/copy/from -atime 240 | xargs cp "{}" c:/copyto

Ecco uno script che copiare i file più recenti di 8 mesi.

# Script TimedCopy.txt
var str from, to, timediff, list, file
lf -n "*" $from ($ftype=="f") AND ($fmtime > addtime(diff(("-"+$timediff)))) > $list
while ($list <> "")
do
    lex "1" $list > $file
    system copy ("\""+$file+"\"") ("\""+$to+"\"")
done

Il comando lf (file di elenco) è abbastanza flessibile. La sua pagina di aiuto è a http://www.biterscripting.com/helppages/lf.html.

Per eseguire lo script, copiare e incollare lo script in file C:. /Scripts/TimedCopy.txt, avviare biterscripting ed eseguire il comando

script "C:/Scripts/TimedCopy.txt" from("c:/copyfrom") to("d:/copyto") timediff("240000000")

Spiegazione dell'argomento TimeDiff

"240000000" significa 240 giorni, 00 ore, 00 minuti, 00 secondi

"120000" significa 12 ore, 00 minuti, 00 secondi

"3000" significa 30 minuti, 00 secondi

"30" significa 30 secondi

ecc.

(Per datato, presumo vuoi dire modificato. Se si intende creato, utilizzare $ fctime invece di $ fmtime nello script.)

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top