Home > Back-end >  Lower and remove special character of file name
Lower and remove special character of file name

Time:09-27

I want to create a script, which lower and remove special character multiple text files.

my files in folder like this:

- ⚡ Document.txt
- [Review] Test File.txt

i want remove special char of filename like this

- document.txt
- review test file.txt

i've tried like this, but only lower filename. how to remove special character?

@echo off
setlocal enableDelayedExpansion

pushd %currentfolder%

for %%f in (*) do (
   set "filename=%%~f"

   for %%A in (a b c d e f g h i j k l m n o p q r s t u w x y z) do (
      set "filename=!filename:%%A=%%A!"
   )
   ren "%%f" "!filename!" >nul 2>&1
)
endlocal

Before

Before

After

CodePudding user response:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET "sourcedir=u:\your files"
set "validchars=abcdefghijklmnopqrstuvwxyz1234567890. "

pushd "%sourcedir%"
FOR %%b IN (*) DO (
 set "newname="
 set "oldname=%%b"
 call :validate
 if /i "%%b" neq "!newname!" ren "%%~sb" "!newname!"
)

popd

GOTO :EOF

:validate
if not defined oldname goto :eof
set "c1=%oldname:~0,1%"
set "oldname=%oldname:~1%"
if "!validchars:           
  • Related