Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Windows]Batch per spostare directory

    Ciao,
    Avrei la necessità di creare un batch (un file bat) per far si che vengano spostate tutte quelle directory che iniziano con un certo set di caratteri e finiscono con un altro, ma purtroppo il move con i caratteri jolly mi funziona solo per i file e non per le directory.
    Esempio:
    <dir>scatolaoggetto_files
    <dir>scarpeabbigliamento_files
    <dir>scalaattrezzo_files

    Quindi spostare tutte quelle directory che iniziano con sca e finiscono con files in una altra directory che decido io.

    Grazie a chi mi può dare una mano.

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    ciao, il grosso è fatto, ma la copia/sposta la inserisci tu, così devi guardare lo script e capirlo .... per evitare di perdere dati
    se lo esegui cosi' com'e' ti fa solo la lista delle cartelle che hai indicato "sca" con "_files"
    attento a non perdere per strada qualche carattere "strano" mentre maneggi il batch (tilde, ecc.....)
    codice:
    @echo off
    rem http://forum.html.it/forum/showthrea...readid=2921648
    
    rem nel percorso seguente si trovano le cartelle da spostare (non deve essere la root del disco es. c:\)
    set WebSource=C:\Web_Sites
    
    rem la cartella seguente ospiterà le cartelle spostate
    set WebDest=C:\NEW_Web_Sites
    
    rem ATTENZIONE AI NOMI DOPPI ....
    
    FOR /R %WebSource% %%D IN (.) DO (call :DoIt "%%D")
    pause
    exit /b
     
    :DoIt
      set MySource=%~f1
      if /I "%MySource:~-6%" NEQ "_files" exit /b
      call :StrLength %MySource%
      call set cart1=%%MySource:~0,%backslash%%%
      call set cart2=%%MySource:~%backslash%%%
      if /I "%cart2:~0,3%" NEQ "sca" exit /b
      echo %cart1%   -   %cart2%
      echo la stringa e' lunga %length% caratteri, la backslash si trova in posizione %backslash%
      exit /b
     
    :StrLength
    rem StrLength(string)
    rem ritorna la lunghezza della stringa e la posizione della backslash più a destra
      set #=%1%
      set length=0
      set backslash=0
      :stringLengthLoop
      if defined # (
        set #=%#:~1%
        set /A length += 1
        set bks=%#:~0,1%
        if "%bks%"=="\" set backslash=%length%
        goto :stringLengthLoop
      )
    rem echo %1%
    rem echo la stringa e' lunga %length% caratteri, la backslash si trova in posizione %backslash%
    exit /b
    non è un fulmine di guerra in termini di velocita', pensa alla ferrari F14T(leggi FIAT) rispetto alla Mercedes
    Ultima modifica di marino51; 31-01-2015 a 23:38

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    ricordati che devi aver attivato le estensioni di MS Dos, si fa, una volta per tutte, accendendo uno switch di cmd.exe

    ti aggiungo il pezzettino al codice, inserisci la call e la nuova "subroutine"

    codice:
      echo %cart1%   -   %cart2%
      echo la stringa e' lunga %length% caratteri, la backslash si trova in posizione %backslash%
      call :MoveIt
      exit /b
    
    :MoveIt
      set MyDest=%WebDest%\%cart2%
      mkdir %MyDest%
    exit /b
    di nuovo viene creta la nuova cartella, a te inserire i comandi do move o copy
    ti suggerisco prima di fare un giro con mkdir per vedere che tutto è ok

  4. #4

    e io che pensavo di gestirmela con un move
    il problema è che la cartella di destinazione dovrebbe essere diversa per ogni file
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Perchè non provi con robocopy?
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quindi spostare tutte quelle directory che iniziano con sca e finiscono con files in una altra directory che decido io.

    il problema è che la cartella di destinazione dovrebbe essere diversa per ogni file
    il tuo pensiero mi si è improvvisamente oscurato .....

    Perchè non provi con robocopy?
    il problema come posto inizialmente, non lo si risolve con robocopy, salvo scrivere riga per riga i comandi
    ma in questo caso allora tanto vale usare move di dos scritto per ciascuna cartella


    forse dall'elenco delle cartelle, fai prima a crearti il batch con le "move" in un foglio excel
    Ultima modifica di marino51; 02-02-2015 a 20:49

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.