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.
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
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:
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
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.
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) è:
$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).
Inserendo un messaggio, dichiari di aver letto e accettato il regolamento di partecipazione.
Nello specifico, sei consapevole che ti stai assumendo personalmente la totale responsabilità delle tue affermazioni, anche in sede civile e/o penale,
manlevando i gestori di questo sito da ogni coinvolgimento e/o pretesa di rivalsa.
Dichiari inoltre di essere consapevole che il messaggio sarà visibile pubblicamente, accetti di diffonderlo con licenza
CC BY-NC-SA 3.0 (con attribuzione a "TurboLab.it") e rinunci ad ogni forma di compensazione (economica o altro).
Rinunci inoltre esplicitamente a qualsiasi pretesa di cancellazione del messaggio.