Risolto File batch per rinominare file

attila666

Utente abituale
Original poster
6 Giugno 2017
320
13
18
roma
office 365
Buongiorno, avrei necessità di togliere a decine di file dentro la stessa cartella il suffisso "L_" dall'inizio del nome ad esempio da " L_file1.xlsx" a "file1.xlsx" tramite un file bach, magari selezionando anche il percorso, pensavo di trovare rapidamente su google come fare ma non riesco a farlo funzionare, questo codice si avvicina a quanto mi occorre ?
Visual Basic:
ren ??? - L_???.xlsx ???.xlsx
 

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
23.360
4.232
1.845
vicino a Milano
Office 365
Ciao, prova questo codice in un file .bat e fammi sapere

Bash:
@echo off
setlocal EnableDelayedExpansion

REM Chiedi all'utente di selezionare la cartella
set "folderPath="
for /f "delims=" %%I in ('powershell -Command "(New-Object -ComObject Shell.Application).BrowseForFolder(0, 'Seleziona la cartella da modificare', 0, 0).Self.Path"') do set "folderPath=%%I"

REM Esci se l'utente ha premuto Annulla
if not defined folderPath exit /b

REM Cicla attraverso tutti i file nella cartella
for %%F in ("%folderPath%\*.*") do (
    set "fileName=%%~nF"
    set "fileExtension=%%~xF"

    REM Rimuovi i primi 2 caratteri "L_"
    set "newFileName=!fileName:~2!!fileExtension!"

    REM Rinomina il file
    ren "%%F" "!newFileName!"
)

echo Rimozione completata!
 
  • Like
Reactions: attila666

attila666

Utente abituale
Original poster
6 Giugno 2017
320
13
18
roma
office 365
Powerwin @Powerwin Funziona, anche troppo Crepa_pelle ogni volta che la lancio si mangia i primi caratteri del file, anche se non hanno la "L_" come parte iniziale, scusa forse non avevo specificato che ci sono altri file nella cartella senza il suffisso "L_" e non devono essere toccati
 

attila666

Utente abituale
Original poster
6 Giugno 2017
320
13
18
roma
office 365
Powerwin @Powerwin Ne sono cosciente, per questo mi sono scusato SmileFace
 

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
23.360
4.232
1.845
vicino a Milano
Office 365
Prova quest'altro codice
Visual Basic:
@echo off
setlocal EnableDelayedExpansion

REM Chiedi all'utente di selezionare la cartella
set "folderPath="
for /f "delims=" %%I in ('powershell -Command "(New-Object -ComObject Shell.Application).BrowseForFolder(0, 'Seleziona la cartella da modificare', 0, 0).Self.Path"') do set "folderPath=%%I"

REM Esci se l'utente ha premuto Annulla
if not defined folderPath exit /b

REM Cicla attraverso tutti i file nella cartella
for %%F in ("%folderPath%\L_*.*") do (
    set "fileName=%%~nF"
    set "fileExtension=%%~xF"

    REM Verifica se il nome del file inizia con "L_"
    if /I "!fileName:~0,2!"=="L_" (
        REM Rimuovi i primi 2 caratteri "L_"
        set "newFileName=!fileName:~2!!fileExtension!"

        REM Rinomina il file
        ren "%%F" "!newFileName!"
    )
)

echo Rimozione completata!

p.s. ho modificato il codice postato poco fa
 
Ultima modifica:

attila666

Utente abituale
Original poster
6 Giugno 2017
320
13
18
roma
office 365
Powerwin @Powerwin perfetto PollicioneInSu gentilissimo,
P.s. una chicca, c'e anche modo di impostare il percorso di ricerca iniziale già nella cartella in cui risiede il file ? la corrispondenza di
Visual Basic:
.InitialFileName = pathActual
in VB ?