Robocopy (o xcopy) leggere dal file?
Domanda
quindi ho un paio di fogli Excel che contengono le directory di tutti derivanti da una directory principale singolo. Esiste un modo per avere robocopy (o un programma simile) leggere il foglio di Excel come input per solo copiare i file selezionati?
Questo è il formato dei fogli di calcolo:
NMMC c6 31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG
NMMC 2e 1da3d2ec-526f-479a-9c09-90cb2cfad0b6.IMG
NMMC 8a f77168ad-2f35-490c-a2a8-25e9fa4ac0ea.IMG
NMMC 2f fc2162f8-7548-4921-b722-5899cbe54641.IMG
NMMC fc 1fe09fcd-3861-4de8-8bfd-4510ffa8f29c.IMG
hcri001 1b 243161b4-eef0-4d5c-9e42-dcea6772afdd.IMG
hcri001 a7 7e60ba72-fb8f-4d65-ae34-92b034c10e2e.IMG
hcri001 84 7934584f-7bc8-4450-bf6d-da58ac2ebb1a.IMG
hcri001 1a cda461ab-fe9d-4b4f-87bf-43dab9dd8644.IMG
hcri001 2b 4f2c02b6-31c6-4d8b-975e-591778bcdfef.IMG
ICPS 8a 2aca38a8-4133-4972-a03f-8c3c15654df3.IMG
ICPS 89 8338f897-76c0-4f6f-9ae5-3b4c7e8a302c.IMG
ICPS 30 d9dba300-6c14-4484-a147-bccb9dd15aa3.IMG
Vorrei copiare questi file in un altro file system con la stessa struttura (ad esempio, se ha origine immagine da C:\Apps\Test\Site\NMMC\c6\31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG
poi ho bisogno di copiare a Z:\Apps\FileSystem\NMMC\c6\31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG
Questo è possibile fare?
Grazie
A cura di chiarire la confusione
Soluzione 4
Ok, penso che ho praticamente l'ho. Ecco lo script prompt dei comandi che sto correndo:
for /f "delims=, tokens=1,2,3" %i in ( D:\foo.csv ) do xcopy /i /y "Z:\%i\%j\%k" "D:\%i\%j\%k"
Questo sta facendo esattamente quello che voglio, ma per ogni file che cerca di copiare un visualizzato il prompt mi ??chiede se si tratta di un file o una directory. C'è comunque da dire xcopy che sono tutti i file? Ho pensato che è quello che / ho fatto, ma che non sembra sopprimere le istruzioni.
Altri suggerimenti
Se si vuole evitare la scrittura di codice di Office Interop il mio suggerimento sarebbe quello di fare quanto segue:
In primo luogo, in Excel salvare i dati come file CSV nel percorso C: \ temp \ foo.csv. Questo creerà un file di dati che è simile al seguente:
NMMC,2e,1da3d2ec-526f-479a-9c09-90cb2cfad0b6.IMG
NMMC,8a,f77168ad-2f35-490c-a2a8-25e9fa4ac0ea.IMG
NMMC,2f,fc2162f8-7548-4921-b722-5899cbe54641.IMG
NMMC,fc,1fe09fcd-3861-4de8-8bfd-4510ffa8f29c.IMG
In seguito, aprire un prompt dei comandi e scrivere il seguente comando:
for /f "delims=, tokens=3" %i in ( c:\temp\foo.csv ) do echo %i
Questa uscita tutti i nomi dei file (e solo i nomi dei file). Una volta che si è soddisfatti questo sta lavorando quindi modificare il "echo% i" per essere quello comando xcopy che vuoi.
Creare un file batch o script di shell usando un editor di testo. Ad esempio, è possibile trovare / sostituire in modo che il file bat contiene qualcosa di simile:
copy c:\31b5ac6c-1377-4a86-90a0-73c6335907e3.IMG
copy c:\1da3d2ec-526f-479a-9c09-90cb2cfad0b6.IMG
copy c:\f77168ad-2f35-490c-a2a8-25e9fa4ac0ea.IMG
copy c:\fc2162f8-7548-4921-b722-5899cbe54641.IMG
copy c:\1fe09fcd-3861-4de8-8bfd-4510ffa8f29c.IMG
Si potrebbe provare a utilizzare di PowerShell COM Automation per leggere il file Excel e alimentare le linee in copia, xcopy o robocopy.
Non riesco a dare un esempio di come questo sarebbe stato fatto, in pratica, il mio PowerShell-fu non è abbastanza forte. Google potrebbe essere il tuo amico lì.