FILE.BAT

Se Windows genera un errore, hai un problema di virus o vuoi discutere/segnalare l'uscita della nuova versione di un software per la piattaforma Microsoft, questa è la sezione giusta.
Regole del forum
Rispondi
Avatar utente
SALVO88
Livello: Scheda perforata (1/15)
Livello: Scheda perforata (1/15)
Messaggi: 2
Iscritto il: ven feb 07, 2025 12:25 pm

FILE.BAT

Messaggio da SALVO88 »

buongiorno
avrei la necessità di gestire dei file txt (circa 260) e spostarli da una cartella comune "Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI"
ad una cartella Y:\locatelli in base al nome in questo caso locatelli
l'abbinamento file txt alla sua cartella deve essere fatto in base al nome del txt che può essere diverso dal nome della cartella di destinazione ma uguale al txt dentro la cartella destinazione
es
origine
"Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI\GL.txt"
destinazione
" Y:\locatelli\GL.txt"

all'interno della cartella di destinazione ci sarà un file con lo stesso nome di quello in partenza e va sostituito :grazie
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: FILE.BAT

Messaggio da System » ven feb 07, 2025 12:35 pm


Avatar utente
CUB3
Moderatore
Moderatore
Messaggi: 4509
Iscritto il: lun gen 26, 2015 10:13 am

Re: FILE.BAT

Messaggio da CUB3 »

Ciao SALVO88, benvenuto su Turbolab!

Per spostare tutti i file.txt da un cartella ad un altra, sovrascrivendo un eventuale file con lo stesso nome il seguente codice dovrebbe (non ho modo di provarlo al momento) funzionare:

Codice: Seleziona tutto

move /y "Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI\*.txt" " "Y:\locatelli\"
Il comando move con l'opzione /y dovrebbe sovrascrivere automaticamente un file con lo stesso nome. Se sono file importanti ti invito a fare un paio di copie prima di provare lo script!

Un consiglio: quando si intende lavorare con degli script, per semplificarci la vita, meglio utilizzare nomi di file e cartelle senza spazi o piuttosto con il carattere _ al posto dello spazio ;)
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen
Avatar utente
SALVO88
Livello: Scheda perforata (1/15)
Livello: Scheda perforata (1/15)
Messaggi: 2
Iscritto il: ven feb 07, 2025 12:25 pm

Re: FILE.BAT

Messaggio da SALVO88 »

la destinazione del file txt però è sempre diversa es:
"Y:\locatelli\"
"Y:\abb\"
"Y:\siemens\"
etc...

in base al nome
es il file abb.txt andrà nella cartella abb
il file sie.txt andrà nella cartella siemens
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12968
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: FILE.BAT

Messaggio da crazy.cat »

Devi fare una riga per ogni cartella destinazione:
move /y "Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI\abb.txt" " "Y:\abb\"
move /y "Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI\sie.txt" " "Y:\siemens\"
move /y "Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI\locatelli.txt" " "Y:\locatelli\"

Sei hai abb.txt abb1.txt abb2.txt puoi usare il carettere jolly abb*.txt
La più grande lezione nella vita è sapere che anche i pazzi, alle volte, hanno ragione.
Avatar utente
Zigul
VIP
VIP
Messaggi: 455
Iscritto il: dom ott 08, 2023 12:11 am

Re: FILE.BAT

Messaggio da Zigul »

Vediamo prima se ho ben capito lo scenario: c'è una cartella con un groppo di TXT e ciascuno di questi TXT deve andare a sostituire il suo omonimo presente in un percorso con sottocartelle; in pratica si trova l'omonimo, ovunque esso sia, e lo si sovrascrive con quello presente nella cartella generica di partenza. Giusto?

Uno script PowerShell per ottenere questo risultato (sempre bene provarlo su una copia dei file, salvaguardando gli originali) è:

Codice: Seleziona tutto

$source = "Y:\0) DATA BASE LISTINI\1 AGGIORNAMENTI SCARICATI"
$dest = "Y:\locatelli\"
foreach ($file in (Get-ChildItem "$($source)")) {
    $match = Get-ChildItem -Recurse "$($dest)" | Where-Object { $_.Name -eq $file.Name }
    if ($match) {
        if (Test-Path $match.FullName) {
            Remove-Item $match.FullName -Force
        }
        Move-Item -Path $file.FullName -Destination $match.DirectoryName
    }
}
Se è un PC aziendale probabilmente non è concessa l'esecuzione di script PowerShell (si spera), quindi bisogna aprire il terminale e incollare il codice sovrastante; fermo restando che è necessario avere i permessi per accedere e modificare le cartelle coinvolte.
Chiaramente si consiglia di modificare i percorsi con quelli dei file di prova, tenendo presente che i file nella cartella di destinazione saranno cancellati definitivamente prima di essere rimpiazzati (non andranno nel cestino, per intenderci).
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: FILE.BAT

Messaggio da System » ven feb 07, 2025 4:05 pm


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio