Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    23

    DOS - Aiuto su un passaggio di copiatura script

    Ciao a tutti.
    Sono nuovo del forum e spero di riuscire a spiegarmi... abbiate pazienza.

    Non riesco a risovere un piccolo ( ma per me spinoso) problema di script e spero ci sia qualcuno di voi maghi che possa aiutarmi.

    Ho una USB memory sulla quale sto gestendo un complesso script che funzione benissimo tranne per un passaggio dal quale non riesco a uscire fuori.

    Tra le varie cartelle ne ho una di partenza del programma che chiamerò DISNEY

    All'interno di questa CARTELLA prima di avviare lo script vado a mettere UNA altra
    cartella (sottocartella) che chiamerò AMICI_DI_PIPPO ma che potrebbe anche essere AMICI_DI_PAPERINO o AMICI_DI_ARCHIMEDE..............
    Il nome di questa cartella che vado di volta in volta a mettere all'interno di DISNEY può essere diverso. (attenzione: la cartella DYSNEY conterrà sempre e solo una cartella )

    Quello che non riesco a fare è dire allo script di copiare TUTTI i file all'interno della sottocartella che trova in DISNEY indipendentemente dal suo nome. ( solo i file contenuti, non anche la cartella )

    Esempio: per DISNEY/AMICI_DI_PIPPO/ che conterrà i file Topolino Minni Pluto
    dovrebbe copiare i file Topolino Minni e Pluto

    Ma se avessi messo all'interno della cartella Disney AMICI_DI_PAPERINO i file da copiare sarebbero ad esempio Paperoga, Paperina......
    Il fatto che il nome della sottocartella è variabile mi crea un problema che non riesco a risolvere nè con copy nè xcopy nè altro

    Qualcuno può aiutarmi con un esempio script per "scavalcare" la sottocartella di Disney qualsiasi nome abbia e copiare tutti i file all'interno??

    Utilizzo e utilizzerò la memoria USB indifferentemente su W95. XP, Vista,W7 e a parte questo problema funziona correttamente.

    So e immagino che magari mi sono inchiodato su una cretinata, e la soluzione è banale come a volte accade, ma non riesco a venirne fuori.

    Vi ringrazio da subito per l'aiuto che saprete sicuramente darmi.

  2. #2
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    fai un file batch e copiaci dentro questo mettendo la tua cartella di destinazione
    for /R "C:\disney\" %%f in ("*.*") DO @copy "%%f" C:\cartelladestinazione\ /Y

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    23

    >>> RISOLTO !!! <<<

    ### Grazie mille del tuo aiuto Nelsonblu

    Ho brillantemente risolto con il tuo suggerimento.

    Sei stato sintetico, veloce e risolutivo.
    Adesso però devo approfodire questa parte di istruzioni con impiego di "%" e variabili che conosco solo in parte, e che è interessantissima e risolutiva in molti casi ...

    Purtruppo sui internet è difficile trovare siti che spieghino le sintassi dei comandi dos
    in modo approfondito e chiaro.
    La maggior parte dei siti si limita a copiare nuda e cruda la guida dos di sistema senza nessuna variazione sul tema.

    Proverò a trovare qualcosa di meglio da studiare in libreria ......... naturalmente accetto suggerimenti.

    Grazie ancora.

  4. #4

    Re: >>> RISOLTO !!! <<<

    Originariamente inviato da FaberF
    ....Purtruppo sui internet è difficile trovare siti che spieghino le sintassi dei comandi dos
    in modo approfondito e chiaro.
    La maggior parte dei siti si limita a copiare nuda e cruda la guida dos di sistema senza nessuna variazione sul tema.

    Proverò a trovare qualcosa di meglio da studiare in libreria ......... naturalmente accetto suggerimenti.
    Niente libreria!!

    Esegue il comando specificato per ogni file di un gruppo di file.

    FOR %variabile IN (gruppo) DO comando [parametri del comando]

    %variabile Indica un parametro sostituibile composto da una sola lettera.
    (gruppo) Indica gruppo di uno o pi— file. Si possono usare caratteri
    jolly.
    comando Specifica il comando da eseguire per ciascun file.
    parametri del comando
    Indica i parametri o le opzioni del comando specificato.

    Per usare FOR in un programma batch, utilizzare la sintassi %%variabile
    anzich‚ %variabile. Le variabili possono essere differenziate utilizzando
    lettere maiuscole e minuscole. Esempio: %i Š diversa
    da %I.

    Se le estensioni dei comandi sono abilitate, per il comando FOR
    sono supportate le forme aggiuntive seguenti:

    FOR /D %variabile IN (gruppo) DO comando [parametri-comando]

    Se il parametro gruppo contiene caratteri jolly, per la corrispondenza
    verranno utilizzati nomi di directory anzich‚ nomi di file.

    FOR /R [[unit…:]percorso] %variabile IN (gruppo) DO comando
    [parametri-comando]

    Esegue l'istruzione FOR in ogni directory dell'albero di directory
    con radice [unit…:]percorso. Se dopo l'opzione /R
    non viene specificata alcuna directory, come radice verr… utilizzata
    la directory corrente.
    Se il valore del parametro gruppo Š un punto (.), verr… semplicemente
    eseguita l'enumerazione dell'albero di directory.

    FOR /L %variabile IN (inizio,incremento,fine) DO comando [parametri-comando]

    In questo caso il parametro gruppo Š una sequenza di numeri compresi
    tra inizio e fine, con incrementi pari a incremento.
    Il parametro gruppo (1,1,5) genera ad esempio la sequenza 1 2 3 4 5,
    mentre (5,-1,1) genera la sequenza (5 4 3 2 1).

    FOR /F ["opzioni"] %variabile IN (gruppo-file) DO comando [parametri-comando]
    FOR /F ["opzioni"] %variabile IN ("stringa") DO comando [parametri-comando]
    FOR /F ["opzioni"] %variabile IN ('comando') DO comando [parametri-comando]

    In alternativa, se Š presente l'opzione usebackq:

    FOR /F ["opzioni"] %variabile IN (gruppo-file) DO comando [parametri-comando]
    FOR /F ["opzioni"] %variabile IN ('stringa') DO comando [parametri-comando]
    FOR /F ["opzioni"] %variabile IN (`comando`) DO comando [parametri-comando]

    Il parametro gruppo-file pu• essere costituito da uno o pi— nomi di file.
    Ogni file viene aperto, letto ed elaborato prima di passare al file
    successivo in gruppo-file.
    Durante l'elaborazione il file viene letto e suddiviso in singole righe
    di testo, quindi ogni riga viene scomposta in zero o pi— token.
    Viene quindi richiamato il corpo del ciclo FOR, utilizzando le stringhe
    dei token trovati come valori delle variabili.
    Per impostazione predefinita, /F passa il primo token delimitato da spazi
    di ogni riga di ogni file.
    Le righe vuote vengono ignorate. Il comportamento di analisi predefinito
    pu• essere sostituito specificando il parametro facoltativo "opzioni".
    Tale parametro Š una stringa tra virgolette contenente una o pi— parole
    chiave che specificano le varie opzioni di analisi.
    Parole chiave disponibili:

    eol=c - Specifica il carattere di commento di fine riga
    (uno solo).
    skip=n - Specifica il numero di righe da ignorare, a partire
    dall'inizio del file.
    delims=xxx - Specifica un insieme di delimitatori. Tale insieme
    sostituisce i delimitatori predefiniti (spazi e
    tabulazioni).
    tokens=x,y,m-n - Specifica i token da passare, per ogni riga, al
    corpo del blocco FOR a ogni iterazione. Determina
    l'allocazione di nomi di variabile aggiuntivi.
    L'espressione m-n indica l'intervallo dei token
    compresi tra la posizione m e la posizione n. Se
    l'ultimo carattere della stringa specificata dopo
    tokens= Š un asterisco, verr… allocata una variabile
    aggiuntiva in cui sar… inserito il testo rimanente
    sulla riga dopo l'ultimo token analizzato.
    usebackq - Specifica che sono attive le nuove semantiche, in cui
    le stringhe con apici inversi vengono eseguite come
    comandi e le stringhe con virgolette singole sono
    comandi con stringhe letterali in cui Š possibile
    utilizzare le virgolette doppie per specificare i
    nomi di file in un gruppo di file.

    Esempi:

    FOR /F "eol=; tokens=2,3* delims=, " %i in (file.txt) do @echo %i %j %k

    analizza ogni singola riga in file.txt, ignorando le righe che
    iniziano con un punto e virgola, quindi passa il secondo e il terzo
    token di ogni riga al corpo del ciclo FOR. I token
    sono delimitati da virgole e/o spazi. Si noti che il
    riferimento %i nelle istruzioni del corpo del ciclo FOR consente di
    ottenere il secondo token, %j il terzo e %k i token rimanenti dopo il
    terzo. I nomi di file che contengono spazi devono essere racchiusi tra
    virgolette doppie.
    Per utilizzare le virgolette doppie in questo modo, Š necessario
    specificare anche l'opzione usebackq, per evitare che i caratteri tra
    virgolette doppie vengano interpretati come stringhe letterali da
    analizzare.

    Il parametro %i viene dichiarato esplicitamente nell'istruzione FOR,
    mentre %j e %k sono dichiarati in modo implicito tramite l'opzione
    tokens=.
    Tramite la riga tokens= Š possibile specificare fino a 26 token, purch‚
    ci• non determini un tentativo di dichiarare una variabile oltre la
    lettera "z" o "Z".
    Le variabili del ciclo FOR sono variabili globali costituite da una sola
    lettera, con distinzione tra maiuscole e minuscole, e non possono essere
    presenti pi— di 52 variabili attive contemporaneamente.

    Ô inoltre possibile utilizzare la logica di analisi FOR /F
    su una stringa, trasformando il gruppo di file tra parentesi in una
    stringa tra virgolette singole.
    Tale stringa verr… trattata come una singola riga di input
    proveniente da un file e quindi analizzata.

    Ô infine possibile utilizzare il comando FOR /F per analizzare l'output
    di un comando, trasformando il gruppo di file tra parentesi in una stringa
    tra virgolette inverse.
    Tale stringa verr… trattata come una riga di comando passata a un
    file CMD.EXE figlio e l'output verr… acquisito in memoria e analizzato
    come se fosse un file. L'esempio seguente:

    FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

    enumera pertanto i nomi delle variabili d'ambiente
    nell'ambiente corrente.

    Ô stata inoltre migliorata la sostituzione dei riferimenti alle variabili FOR.
    Ô ora possibile utilizzare la sintassi seguente:

    %~I - Espande %I rimuovendo le virgolette (").
    %~fI - Sostituisce %I con un percorso completo.
    %~dI - Sostituisce %I solo con una lettera di unit….
    %~pI - Sostituisce %I solo con un percorso.
    %~nI - Sostituisce %I solo con un nome di file.
    %~xI - Sostituisce %I solo con un'estensione di file.
    %~sI - Il percorso espanso contiene solo nomi brevi.
    %~aI - Sostituisce %I con gli attributi di file del file.
    %~tI - Sostituisce %I con la data e l'ora del file.
    %~zI - Sostituisce %I con la dimensione del file.
    %~$PATH:I - Esegue una ricerca nelle directory elencate nella
    variabile di ambiente PATH e sostituisce %I con il nome
    completo del primo file trovato. Se il nome della variabile
    di ambiente non Š definito o il file non viene trovato
    durante la ricerca, il modificatore verr… sostituito da
    una stringa vuota.

    Ô possibile combinare pi— modificatori:

    %~dpI - Sostituisce %I solo con una lettera di unit… e un percorso.
    %~nxI - Sostituisce %I solo con il nome e l'estensione di un file.
    %~fsI - Sostituisce %I solo con un percorso completo con nomi
    brevi.
    %~dp$PATH:i - Ricerca %I nelle directory elencate nella variabile di
    ambiente PATH e lo sostituisce con la lettera di unit…
    e il percorso del primo elemento trovato.
    %~ftzaI - Sostituisce %I con una riga di output simile a DIR.

    Negli esempi precedenti Š possibile sostituire %I e PATH con altri valori
    validi. La sintassi %~ deve terminare con un nome di variabile FOR valido.
    L'utilizzo di nomi di variabile con caratteri maiuscoli, ad esempio %I,
    migliora la leggibilit… del testo ed evita possibili confusioni con i
    modificatori, per i quali non viene fatta distinzione tra maiuscole e
    minuscole.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.