Voglio sostituire tutti i caratteri di sottolineatura ( _
) con uno spazio ( ) in un nome file.
Come posso farlo rapidamente, quando ho molti _
personaggi da sostituire?
Voglio sostituire tutti i caratteri di sottolineatura ( _
) con uno spazio ( ) in un nome file.
Come posso farlo rapidamente, quando ho molti _
personaggi da sostituire?
Risposte:
vbScript dovrebbe farlo per te. Creare un file chiamato "rename_underscores.vbs" contenente quanto segue.
Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder("c:\test\")
For Each File In Folder.Files
sNewFile = File.Name
sNewFile = Replace(sNewFile,"_"," ")
if (sNewFile<>File.Name) then
File.Move(File.ParentFolder+"\"+sNewFile)
end if
Next
Assicurarsi che il nome della cartella sia corretto. (Nell'esempio, ho usato c: \ test) E poi fai doppio clic sul tuo file per fare la ridenominazione.
Consiglio di utilizzare uno strumento di terze parti come Bulk Rename Utility . È gratuito e ha un programma di installazione inferiore a 1 MB.
Questo è all'interno dei regni di un file DOS Bat. Crea un file bat (Nuovo-> File di testo, rinomina l'estensione in .bat), quindi copia le sezioni blu sottostanti in esso.
Lo dividerò in sezioni e spiegherò cosa sta facendo.
Stampa lo stato corrente della directory per un confronto successivo
dir /b
Elenca i file nella directory, quindi per tutti quelli che contengono un carattere di sottolineatura e finiscono in .txt, chiama ProcessFile su di essi.
for %%f in (*_*.txt) do call :ProcessFile %%f
goto :finished
La sintassi "str =% str: x = y%" sostituisce le istanze di x con y. In questo caso, stiamo sostituendo "_" con niente
:ProcessFile
set str=%1
rename %1 %str:_=%
goto :eof
Questo è tutto!
Ora stampa solo ciò che è stato modificato in modo da poter confermare che funziona come previsto;
:finished
echo ----
dir /b
Risultati (non parte del file bat)
baz_ing.txt
big_rawr.foo
foo_bar.txt
multiple_underscores_test.txt
----
bazing.txt
big_rawr.foo
foobar.txt
multipleunderscorestest.txt
Come altri hanno già detto, non c'è modo di fare esattamente quello che vuoi senza usare uno script o un file batch. Ad esempio, in PowerShell puoi fare quello che vuoi abbastanza facilmente:
cd "C:\Users\MyName\Documents\MyDirectory"
Dir | Rename-Item –NewName { $_.name –replace "_"," " }
Assicurati di sostituire "C: \ Users \ MyName \ Documents \ MyDirectory" con il percorso della tua directory.
Per maggiori dettagli e altre opzioni, tra cui alcune cose che puoi fare usando solo Explorer, vedi qui: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways- to-rename-multiple-files /
Ecco il mio batch rinominare lo script ruby . Non ho usato altri strumenti di ridenominazione batch, ma penso che il mio script sia molto facile da usare e molto versatile. Ecco il comando per il tuo caso:
ruby bren.rb *_* "_/ "
Ho configurato il mio ambiente Windows in modo tale che bren.rb possa essere eseguito come eseguibile da qualsiasi directory.
Strumento di ridenominazione basato su Windows, il più potente che esiste ed è gratuito. http://www3.telus.net/pfrank/
Questo non risponde esplicitamente alla domanda ('.. in Explorer'), ma ho trovato che il software più utile per farlo era Adobe Bridge (gratuito)
Bonus aggiunto: supporta Regex!