Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: replace characters "_ " and " . " in file names to space with a batch file  (Read 58270 times)

0 Members and 1 Guest are viewing this topic.

Helpmeh



    Guru

  • Roar.
  • Thanked: 123
    • Yes
    • Yes
  • Computer: Specs
  • Experience: Familiar
  • OS: Windows 8
You forget that you can isolate the name part of the filename+extension using the FOR variable modifier ~n

Also you need to learn about delayed expansion.



Yes I do...any links for information? Delayed expansion totally confuses me, and I have no idea what it does, or how to use it?
Where's MagicSpeed?
Quote from: 'matt'
He's playing a game called IRL. Great graphics, *censored* gameplay.

devcom



    Apprentice

    Thanked: 37
    Re:
    « Reply #16 on: May 31, 2009, 10:05:47 AM »
    try this:

    Code: [Select]
    @echo off
    setlocal enabledelayedexpansion

    for /f "tokens=*" %%A in ('dir /b /s /A-D') do (
    set fileName=%%~nA
    set filePath=%%~dpA
    set fileExt=%%~xA
    for /f "tokens=1-2* delims=v" %%B in ('echo !fileName!') do (
    set fileName_main=%%B
    set fileName_vern=%%C
    )
    set fileName_main=!fileName_main:_= !
    set fileName_main=!fileName_main:.= !
    echo REN "!filePath!!fileName!!fileExt!" "!fileName_main!v!fileName_vern!!fileExt!"
    )
    pause

    EDIT this will only work if filenames are set like:
    name v ver
    Download: Choice.exe

    gh0std0g74



      Apprentice

      Thanked: 37
      Re:
      « Reply #17 on: May 31, 2009, 10:46:57 AM »
      try this:

      Code: [Select]
      @echo off
      setlocal enabledelayedexpansion

      for /f "tokens=*" %%A in ('dir /b /s /A-D') do (
      set fileName=%%~nA
      set filePath=%%~dpA
      set fileExt=%%~xA
      for /f "tokens=1-2* delims=v" %%B in ('echo !fileName!') do (
      set fileName_main=%%B
      set fileName_vern=%%C
      )
      set fileName_main=!fileName_main:_= !
      set fileName_main=!fileName_main:.= !
      echo REN "!filePath!!fileName!!fileExt!" "!fileName_main!v!fileName_vern!!fileExt!"
      )
      pause

      EDIT this will only work if filenames are set like:
      name v ver
      why do you want to put an extra "v" in the changed file name?
      Code: [Select]
      C:\test\tmp>dir /B
      02.txt
      03.txt
      04.txt
      windows_media.player_12.rar
      windows_media.player_12_v1.23.rar

      C:\test\tmp>test.bat
      REN "C:\test\tmp\02.txt" "02v.txt"
      REN "C:\test\tmp\03.txt" "03v.txt"
      REN "C:\test\tmp\04.txt" "04v.txt"
      REN "C:\test\tmp\windows_media.player_12.rar" "windows media player 12v.rar"
      REN "C:\test\tmp\windows_media.player_12_v1.23.rar" "windows media player 12 v1.23.rar"
      Press any key to continue . . .

      mioo_sara

        Topic Starter


        Intermediate

        thank you dear devcom
        you were successful  at the first try !!!!
        but if  it's possible put some parameters in  your scripts
        parameters
        some files do not have version  at the end of their names
        example= windows_media.player_full.rar
        in  your scripts it adds "v" at the end of most of file's names
        so if there is not numbers at the end of file names (example help_me.htm) or...
        or if you have any other idea to  solve the problem  try to see ....
        it should not add "v" at the end of these kind of files
        is it possible?

        devcom



          Apprentice

          Thanked: 37
          Code: [Select]
          @echo off
          setlocal enabledelayedexpansion

          for /f "tokens=*" %%A in ('dir /b /s /A-D') do (
          set fileName=%%~nA
          set filePath=%%~dpA
          set fileExt=%%~xA
          for /f "tokens=1-2* delims=v" %%B in ('echo !fileName!') do (
          set fileName_main=%%B
          set fileName_vern=%%C
          if not "!fileName_vern!" equ "" set fileName_vern=v!fileName_vern!
          )
          set fileName_main=!fileName_main:_= !
          set fileName_main=!fileName_main:.= !
          echo REN "!filePath!!fileName!!fileExt!" "!fileName_main!!fileName_vern!!fileExt!"
          )
          pause

          PS if file name will have 'v' in it then some _ . couldn't be removed
          Download: Choice.exe

          mioo_sara

            Topic Starter


            Intermediate

            thanks devcom
            90% done  :D :)
            it can  now rename almost all  files but now it needs 2 more parameters
            1-  this program  can  now rename files but what about folders?
            it can  detect files in  subfolders but what about folder names  themselves?
            2-is there any  other possibility  to  identify  of "v" for version?
            below file name show that there are still  some files that needs to be take care of
            ABC VME v2.1_Setup.exe

            but as i  said it can now work very  nice and its good for release  2

            devcom



              Apprentice

              Thanked: 37
              1) just delete /A-D from
              Code: [Select]
              for /f "tokens=*" %%A in ('dir /b /s /A-D') do (
              2) this is hard for me so this can take long time to make this
              Download: Choice.exe

              gh0std0g74



                Apprentice

                Thanked: 37
                2) this is hard for me so this can take long time to make this
                try not to use batch but use good string processing tools and you can reduce your development time significantly.

                mioo_sara

                  Topic Starter


                  Intermediate

                  thanks dear devcom
                  95% done by now :)
                  it can  now rename folders too(thanks again)
                  1-but  what is that  /A-D ?
                  what exactly  it does?
                  2-  can  you  add another line to  search  in  files and folders names for replacing "_" that are located after version?
                  example= ABC VME v2.1_Setup.exe
                  i think  (.)character is now beautifully  removed or if it's belong to  version  remains
                  but we can  always remove "_" whether it's in front , middle or end of file names
                  thanks

                  devcom



                    Apprentice

                    Thanked: 37
                    1)
                    Quote
                    attributes:
                    D Directories
                    R Read-only files
                    H Hidden files
                    A Files ready for archiving
                    S System files
                    - Prefix meaning not
                    Code: [Select]
                    http://www.computerhope.com/dirhlp.htm
                    2) im out of this, to hard to do in pure batch, i leave this for gh0std0g74, hes good in vbs python perl etc so you will get what you want ;)
                    Download: Choice.exe

                    gh0std0g74



                      Apprentice

                      Thanked: 37
                      2) im out of this, to hard to do in pure batch, i leave this for gh0std0g74, hes good in vbs python perl etc so you will get what you want ;)
                      already posted 3 days ago.

                      mioo_sara

                        Topic Starter


                        Intermediate

                        dear gh0std0g74
                        your scripts  just can  rename  windows media  playe
                        so  what about other file?
                        can  you  fix  it?

                        gh0std0g74



                          Apprentice

                          Thanked: 37
                          dear gh0std0g74
                          your scripts  just can  rename  windows media  playe
                          so  what about other file?
                          can  you  fix  it?

                          just change "*.rar" to "*" for all files.
                          one last thing, please put in some effort. if you want to use batch, at least read up on batch and understand how each statement works. If you want to use the script i proposed, read up on Python and how its syntax is used.

                          Reno



                            Hopeful
                          • Thanked: 32
                            i already gave the answer at post #4, you just need to add the for loop. if you need a lot of batch script, at least learn from the help file as suggested by ghostdog.

                            Code: [Select]
                            @echo off & setlocal

                            for /r %%a in (*.rar) do call:strip "%%a"
                            goto:eof

                            :strip
                            set n=%~n1
                            set a=%n:_v=&set v= v%
                            set a=%a:.= %
                            ren "%~1" "%a:_= %%v%%~x1"

                            mioo_sara

                              Topic Starter


                              Intermediate

                              gh0std0g74
                              Quote
                              at least read up on batch and understand how each statement works
                              Reno
                              Quote
                              at least learn from the help file as suggested by ghostdog.

                              i  need to inform  some information  about myself
                              i am  17 years old and i am  not a experienced person something that is so  clear to  you (Reno --gh0std0g74--devcom and...) is not for me !! believe it or not i try  to  search  in  google first and in  most cases i find  my  answer before even  i make a new topic but sometimes things are really  complicated  and i get confused .  so  my  only  hope is computer hope forum and you  guys
                               i know that batch  progrming is not a real way  to  make a good  and powerful program but to  me  as a beginner it is
                              i am  working  on  a kind  of file sorter for my  computer and  my  blog
                              i know that you  are better and faster in  programing but who's aware of future?!!!!!! ;D ;D