Pagina 1 di 1

FILE.BAT

Inviato: ven feb 07, 2025 12:35 pm
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

Re: FILE.BAT

Inviato: ven feb 07, 2025 1:12 pm
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 ;)

Re: FILE.BAT

Inviato: ven feb 07, 2025 1:31 pm
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

Re: FILE.BAT

Inviato: ven feb 07, 2025 1:51 pm
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

Re: FILE.BAT

Inviato: ven feb 07, 2025 4:05 pm
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).