| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 05-02-2017, 19.29.28   #1
salim
Newbie
 
Registrato: 11-06-2002
Messaggi: 11
salim promette bene
batch copia file da a....

Avrei bisogno di un BATCH che mi faccia una copia di un file txt:

da \\myserver\mydir\miofile.txt a c:\miadir\miofile_06022017.txt

Dove la data nel file destinazione (06022017) è la data dell'ultima modifica del file sorgente

grazie per l'aiuto.

Bentrovati!
salim non è collegato   Rispondi citando
Vecchio 09-02-2017, 11.22.33   #2
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.297
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
Rif: batch copia file da a....

Dalla shell di windows, copia ed incolla, poi premi invio.
Che risultato ti da ?
Codice:
for /f %a in ('"dir \windows\*.ini /TW|findstr "^^[0-9]""') do @echo %a
Posta il risultato cortesemente, poi ti dico cos'è successo.
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non è collegato   Rispondi citando
Vecchio 14-02-2017, 11.18.42   #3
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.297
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
Rif: batch copia file da a....

Il risultato potrebbe essere una cosa del genere:
06/04/2011
03/02/2017
18/10/2016
09/02/2017
02/09/2004
02/09/2004
05/03/2007
13/09/2016
11/08/2008
Cosa è successo ?
Succede che appare a video una lista di date che equivalgono ognuna alla data di ultima scrittura (opzione /TF) di un gruppo di files (\windows\*.ini) dati in pasto all'utility dir (dir /?).
Infatti, digitando:
C:\>dir \windows\*.ini /TF
a video risulta la lista di cui sopra, ma molto più dettagliata.
Supponendo, però, di scomporre l'output in stringhe di testo separate da spazi, si potrebbe identificare ogni stringa (token) come valore di una o più variabili in numero pari a quello delle stringhe stesse: Cio sarebbe utile per identificare una sola variabile il cui valore è esattamente cio di cui si necessita.
Infatti, \miofile.txt sorgente e miofile_06022017.txt destinazione, differiscono nel nome proprio in base alla data.
Come si fa in un batch ad assegnare un valore ad una variabile che cambia in funzione dell'output prodotto da un'utility che scrive a video ?
Di solito, viene utilizzata la direttiva For (For /?) che esegue in modo ricorsivo cio che viene specificato di seguito.
Infatti, digitando:
for /f %a in ... do
si fa in modo che la variabile %a acquisisca valori sempre diversi in base alle condizioni specificate tra in e do; La variabile %a, può subire ulteriori affinamenti derivanti dalla specifica di una condizione più restrittiva, quale può essere ('"dir \windows\*.ini /TW|findstr "^^[0-9]""').
Il carattere "|" (pipe), viene tradotto come "cio che è in output dal risultato di cio che mi precede lo passo come input a cio che mi succede", pertanto ogni singola riga prodotta in output dal comando dir, verrà processata in input da findstr (findstr /?).
La condizione specificata in findstr, è un espressione regolare che impone di estrarre ad ogni inizio riga la prima stringa di testo che contiene uno o più caratteri inclusi nel range [0-9], di fatto la nostra data.
Siccome nessuna delle righe precedenti l'indicazione del file *.ini contiene i caratteri specificati nel range indicato, alla variabile %a sarà associato un valore pari alla stringa estratta da findstr per ogni file in lista visualizzato da dir.
A conclusione del ciclo for ...in ... do, %a conterrà il valore della data relativa all'ultimo file .ini.
Poichè serve una sola data relativa ad un nome file specifico, basta indicare il nome in dir, cioè:
for /f %a in ('"dir \windows\desktop.ini /TW|findstr "^^[0-9]""') do @echo %a
Sembra fin troppo semplice, ma non è proprio così.
Quando si ha a che fare con percorsi di rete, il comando dir \\[percorso] non funziona. (Vedasi UNC path name)
Affinchè esso produca identico risultato che ci si aspetterebbe agendo sui percorsi in locale, basta mappare il percorso di rete su un identificativo di drive, specificando la lettera attraverso il comando net use, es:
net use y: \\myserver\mydir
for /f %a in ('"dir y:\miofile.txt /TW|findstr "^^[0-9]""') do @echo %a
A questo punto, superato il principale scoglio, la stesura del batch dovrebbe scorrere velocemente e con minimo impegno.
Ultimo appunto:
La variabile %a può contenere valori di data con separatore '/', ma nel nome del file destinazione questi non devono figurare, pertanto supponendo che la varabile %a contenesse una stringa pari a 06/12/2016, il seguente comando:
echo %a:~0,2%%a:~3,2%%a:~6,4%
produrrebbe come risultato
06122016
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Norman Malware Cleaner - AIUTO sikano Sicurezza&Privacy 7 11-04-2008 16.28.32
Batch File Modifier 1.7 Thor Archivio News Software 0 02-08-2007 13.40.02
[MDK] 10 - Problema con Wine Gratisweb Linux e altri Sistemi Operativi 9 23-07-2004 18.31.08
Windows file protection:guida Deuced Windows 9x/Me/NT4/2000 7 16-03-2004 08.25.28

Orario GMT +2. Ora sono le: 15.56.48.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.