Come sostituire un singolo carattere nei file di Windows utilizzando un file batch?

Ho un server Windows Server 2003 che dispone di un integer gruppo di nomi di file che necessitano di rinominare. Fondamentalmente, ho solo bisogno di tutti - (trattini) sostituiti da _ (sottolineatura), indipendentemente da where si trovano nel nome del file. Supponiamo che non ci siano duplicati.

Posso fare questo sul mio Mac con un piccolo script ma i file sono troppo grandi e impazzenti per trasferire al mio Mac, rinominare, quindi tornare al server. È ansible farlo in un prompt dei comandi di Windows senza wherer scaricare un rinominatore o un software aggiuntivo?

Dal prompt dei comandi – supponendo che tutti i file siano nella stessa directory:

One-liner

for /f "tokens=* delims= " %i in ('dir /b "*.txt"') do Set LIST=%i& set LIST | ren "%~fi" "%LIST:-=_%"

Tieni presente che si tratta di un solo tiro alla window del prompt dei comandi. Ciò significa che se si annulla questo per qualsiasi motivo, è necessario aprire un altro prompt dei comandi e eseguire nuovamente.

Trovato su stackoverflow:

https://stackoverflow.com/questions/261515/batch-file-script-to-remove-special-characters-from-filenames-windows

 Set fso = CreateObject("Scripting.FileSystemObject") Set re = New RegExp re.Pattern = "[-]" ' put all characters that you want to strip inside the brackets' re.IgnoreCase = True re.Global = True If WScript.Arguments.Unnamed.Count = 1 Then If fso.FolderExists(WScript.Arguments.Unnamed(0)) Then Recurse fso.GetFolder(WScript.Arguments.Unnamed(0)) Else WScript.Echo "Folder not found." End If Else WScript.Echo "Please give folder name as argument 1." End If Sub Recurse(f) For Each sf In f.SubFolders Recurse sf WScript.Echo sf.Name, " -> ", re.Replace(sf.Name, "_") sf.Name = re.Replace(sf.Name, "_") Next For Each sf In f.Files WScript.Echo sf.Name, " -> ", re.Replace(sf.Name, "_") If sf.Name <> re.Replace(sf.Name, "_" ) Then sf.Name = re.Replace(sf.Name, "_") End If Next End Sub 

Un'altra soluzione sarebbe quella di utilizzare due file batch.

File 1: run_rn.bat:

 forfiles /m "*.log" /c " cmd /c rn @file" 

File 2: rn.bat:

 set LIST1=%1 set LIST2=%LIST1:_=;% ren %LIST1% %LIST2% 

I file batch devono essere nella stessa directory come i file che si desidera modificare.

Batch File per sostituire un carattere in un nome di file con un altro carattere

Considera di utilizzare un'applicazione gratuita per la GUI per tenere la tua mano: http://www.bulkrenameutility.co.uk/Main_Intro.php

Se è necessario questo con un file batch, essere super attenti! Gli script batch non dispongono di un button di annullamento. Se esegui il tuo script di pipistrello che si applica a tutti i file in modo ricorsivo sotto un punto C: :, hai appena rinominato each file sul tuo computer e immediatamente smette di funzionare e non riesce ad avviare. Dovrai fare una completa reinstallazione del sistema operativo. Sempre avere un backup!

In primo luogo dovrai decidere se vuoi che il file batch funzioni su un singolo file? Per lavorare su tutti i file di una directory? Oppure lo fai in modo ricorsivo (tutti i file / cartelle sotto una directory). Ecco alcuni suggerimenti:

Batch file per sostituire tutte le sottolineature _ con la lettera M a tutti i file della directory corrente

Mettere questo in un file batch denominato change_underscores_in_this_directory.bat

 @echo off setlocal enabledelayedexpansion for %%a in (*_*) do ( set file=%%a ren "!file!" "!file:_=M!" ) 

Eseguire e tutti i file in quella directory con un sottolineatura verranno modificati in un 'M'.

Utilizza un file batch per sostituire gli spazi senza nulla (rimuovi gli spazi):

https://stackoverflow.com/questions/11270453/how-to-remove-spaces-from-file-names-in-bulk

Utilizzare un file batch per sostituire gli spazi con sottolineatura, in modo ricorsivo:

https://stackoverflow.com/questions/1613644/how-to-replace-names-recursively-via-windows-batch-operation

Il 12noon ha un'utilità GRATUITA per eseguire la ridenominazione di file di massa con un supporto completo di espressione regolare, che è abbastanza freddo. Scheda tecnica "Nome Twister" con link per il download

Non ho usato questo in rabbia, ma ho usato altre applicazioni del loro (in particolare il videoproiettore) e sono stato veramente felice.