Domanda

Ho visto persone farlo in Perl, ma mi chiedo se c'è un modo per farlo via Batch?È costruito in Windows, quindi penso che sarebbe più utile sapere come farlo con uno script batch.Non richiede l'installazione di nulla su un computer.

Un nome di ingresso di esempio: myFile_55 Un esempio di output del modello: modifica myFile su picture e ridurre il numero di 13. Un'uscita di esempio: picture_42.

Come ti avvisirebbe questo?Conosco un comando batch da rinominare:

ren myFile_55 picture_42.

Allora, se ho un file denominato renamer.bat, posso aggiungere quanto segue:

for /r %%x in (%1) do ren "%%x" %2.

Quindi posso digitare questo comando:

renamer.bat myfile* picture*.

Non so come ridurre i numeri, però.

Nessuna soluzione corretta

Altri suggerimenti

Puoi probabilmente inserire il nome del file originale tramite A per loop ed estrarre il nome e i numeri, fare il matematico sui numeri, quindi collegarlo indietro con il nuovo nome e numero.Finché il formato del nome file è name_number puoi usare questo:

REM Allow for numbers to be iterated within the for-loop i.e. the i - z
SETLOCAL ENABLEDELAYEDEXPANSION
SET i=0
SET z=13
SET newName=picture
SET workDir=C:\Path\To\Files

REM Given that filenames are in the format of 'Name_number', we're going to extract 'number
REM and set it to the i variables, then subtract it by 13, then rename the original file
REM to what the newName_x which if the filename was oldName_23 it would now be newName_10
FOR /r %%X in (%1) do (
  FOR /F "tokens=1-2 delims=_" %%A IN ("%%X") DO (
    SET i=%%B
    SET /A x=!i! - %z%

    REM ~dpX refers to the drive and path of the file
    REN "%%~dpX\%%A_%%B" "%newName%_!x!"
  )
)
.

Modifica: modificato il comando REN per includere l'unità e il percorso del file originale.Cambiato dal minuscolo X al maiuscolo X per non confondere %%~dpX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top