Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. DOS question

DOS question

Scheduled Pinned Locked Moved The Lounge
questionhelp
43 Posts 35 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M megaadam

    Bingo! :) When I first saw (Windows a.k.a.) Total Commander, I used to sneer at it. But that was a long time ago. Now, I never look at whatsitcalled included with windows.

    ..................... Life is too shor

    N Offline
    N Offline
    Naruki 0
    wrote on last edited by
    #19

    At least, I think that's what it does, so surely they named it that. Same initials, anyway. Total Commander is da bomb, baby. Select the files (or folders) to rename, press CTRL-M for the rename dialog, and bask in the options. Also note the preview before committing changes.

    Narf.

    1 Reply Last reply
    0
    • L Larry G Grimes

      Joe has the best answer on this one.

      N Offline
      N Offline
      Naruki 0
      wrote on last edited by
      #20

      No he doesn't. leppie does. :-)

      Narf.

      L 1 Reply Last reply
      0
      • D dchuks

        Use the following script. It does the following: For each *.txt file in the current directory... 1. remove the first character, assuming it is an L 2. add 00 to the front 3. extracts the last 7 characters XXX.txt, where XXX is the original number padded with zeros 4. adds the L back to the front 5. does the rename

        @echo off
        setlocal ENABLEDELAYEDEXPANSION
        for /f "delims=" %%a in ('dir /b *.txt') do (
        (set i=%%a)
        (set i=00!i:~1,100!)
        (set i=L!i:~-7!)
        echo rename "%%a" to "!i!"
        rename "%%a" "!i!"
        )
        endlocal

        T Offline
        T Offline
        thinicezero
        wrote on last edited by
        #21

        I like that!

        1 Reply Last reply
        0
        • R Russell

          I have to rename in some folders many file. The file are named like:

          L1.txt
          L2.txt
          ...
          L9.txt
          L10.txt
          ...
          L99.txt
          L100.txt
          ...

          Now, to apply some code, I need that the names changes to

          L001.txt
          ...
          L009.txt
          L010.txt
          ...
          L099.txt
          L100.txt

          I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

          rename L?.txt L00?.txt
          rename L??.txt L0??.txt

          but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


          Russell

          M Offline
          M Offline
          Marc Greiner at home
          wrote on last edited by
          #22

          You could try Renamer[^] (free product). For example, I use it to rename my camcorder videos with a filename that equals the video timestamp (YYY-MM-DD HH-MM-SS.MTS)

          1 Reply Last reply
          0
          • M Mike Winiberg

            Hmm, multiple tools available really, depending on budget and the amount of effort you want to use: ZTREE (remember Xtree for DOS), ZTree is based on this, is still being developed and sold, and has none of the memory limits of the old DOS Xtree, seing as how its a Windows 32bit console app. Otherwise look at XXCOPY if you want something that runs in a window, DirectoryOpus or Powerdesk for native windows GUI. If you want 'free', then Powershell would be a good start, or one of the many 'Norton Commander' clones out there.

            V Offline
            V Offline
            Victor Ulloa
            wrote on last edited by
            #23

            Mike is right, for jobs like these I can't live without ZTree. You can insert, delete portions of the name, insert an autoincrement (with or without the leading zeroes), etc.

            1 Reply Last reply
            0
            • R Russell

              I have to rename in some folders many file. The file are named like:

              L1.txt
              L2.txt
              ...
              L9.txt
              L10.txt
              ...
              L99.txt
              L100.txt
              ...

              Now, to apply some code, I need that the names changes to

              L001.txt
              ...
              L009.txt
              L010.txt
              ...
              L099.txt
              L100.txt

              I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

              rename L?.txt L00?.txt
              rename L??.txt L0??.txt

              but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


              Russell

              S Offline
              S Offline
              Simon Capewell
              wrote on last edited by
              #24

              I use either Stexbar[^] or Shell Renamer[^]

              1 Reply Last reply
              0
              • R Russell

                I have to rename in some folders many file. The file are named like:

                L1.txt
                L2.txt
                ...
                L9.txt
                L10.txt
                ...
                L99.txt
                L100.txt
                ...

                Now, to apply some code, I need that the names changes to

                L001.txt
                ...
                L009.txt
                L010.txt
                ...
                L099.txt
                L100.txt

                I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                rename L?.txt L00?.txt
                rename L??.txt L0??.txt

                but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                Russell

                G Offline
                G Offline
                Gary Wheeler
                wrote on last edited by
                #25

                for /I %I in (1,1,9) do ren L%I.txt L00%I.txt
                for /I %I in (10,1,99) do ren L%I.txt L0%I.txt

                Software Zen: delete this;

                1 Reply Last reply
                0
                • R Russell

                  I have to rename in some folders many file. The file are named like:

                  L1.txt
                  L2.txt
                  ...
                  L9.txt
                  L10.txt
                  ...
                  L99.txt
                  L100.txt
                  ...

                  Now, to apply some code, I need that the names changes to

                  L001.txt
                  ...
                  L009.txt
                  L010.txt
                  ...
                  L099.txt
                  L100.txt

                  I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                  rename L?.txt L00?.txt
                  rename L??.txt L0??.txt

                  but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                  Russell

                  M Offline
                  M Offline
                  MatthewPainter
                  wrote on last edited by
                  #26

                  Up till a couple of months ago I would have written this in VBScript no sweat but these days I am writing everything in PowerShell to get my skills up. Thanks for the challenge.

                  # Make 100 test files (create dir structure first)
                  1..100 | % ($_){New-Item "c:\scripts\Lfiles\L$_.txt" -type file}

                  # Rename all files to specification (remove -whatif switch to make it live)
                  Get-ChildItem c:\scripts\Lfiles | % ($_){rename-item -path $_.fullname -newname (($_.basename -replace "[0-9]", "")+("{0:000}" -f [int]($_.basename -replace "[^0-9]", ""))+($_.extension)) -whatif}

                  1 Reply Last reply
                  0
                  • H Henry Minute

                    I think the best way to do this is to use a batch file and the FOR command. Take a look at this[^] for some ideas.

                    Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”

                    B Offline
                    B Offline
                    brimars
                    wrote on last edited by
                    #27

                    Assuming Russell is actually using DOS (we still have machinery running DOS exclusively on 386 and 486 machines), I think Henry's idea is probably the best place to start. The DOS ? and * wildcard characters don't always give exactly the expected results.

                    1 Reply Last reply
                    0
                    • R Russell

                      I have to rename in some folders many file. The file are named like:

                      L1.txt
                      L2.txt
                      ...
                      L9.txt
                      L10.txt
                      ...
                      L99.txt
                      L100.txt
                      ...

                      Now, to apply some code, I need that the names changes to

                      L001.txt
                      ...
                      L009.txt
                      L010.txt
                      ...
                      L099.txt
                      L100.txt

                      I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                      rename L?.txt L00?.txt
                      rename L??.txt L0??.txt

                      but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                      Russell

                      T Offline
                      T Offline
                      TheF0rmatter
                      wrote on last edited by
                      #28

                      For files with numbers less than 10: FOR /L %F in (1,1,9) DO REN L%F.txt L00%F.txt For files with numbers from 10 to 99: FOR /L %F IN (10,1,99) DO REN L%F.txt L0%F.txt You could expand this out with a check to make sure the file exists: FOR /L %F IN (1,1,9 DO IF EXIST L%F.txt REN L%F.txt L00%F.txt

                      R I 2 Replies Last reply
                      0
                      • N Naruki 0

                        No he doesn't. leppie does. :-)

                        Narf.

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #29

                        Aww, you hurt my feelings. I was just starting to feel special. :) Just kidding - that Total Commander thing does look pretty nice.

                        N 1 Reply Last reply
                        0
                        • R Russell

                          I have to rename in some folders many file. The file are named like:

                          L1.txt
                          L2.txt
                          ...
                          L9.txt
                          L10.txt
                          ...
                          L99.txt
                          L100.txt
                          ...

                          Now, to apply some code, I need that the names changes to

                          L001.txt
                          ...
                          L009.txt
                          L010.txt
                          ...
                          L099.txt
                          L100.txt

                          I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                          rename L?.txt L00?.txt
                          rename L??.txt L0??.txt

                          but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                          Russell

                          I Offline
                          I Offline
                          InfinitelyRemote
                          wrote on last edited by
                          #30

                          Whenever I have to do bulk renaming I always include DOS in the mix... First I place all the files in c:\work folder entering the following in DOS C: CD C:\WORK DIR /B > FILES.TXT yields a simple text file with all file names listed one per line. then make a second copy of the TXT file COPY FILES.TXT FILES1.TXT FILES.TXT becomes the rename "Command" portion and FILES1.TXT becomes the "New Names" portion of the exercise. Many times the file names I am converting contain spaces so that means the RENAME command requires the name be encased in quotes. so using a text editor (I use JSoft's EditPadPro) I do a search and replace of carriage returns... FIND [CR] and REPLACE WITH: " RENAME " This puts a quote at the end of each line and the rename command-space-quote at the beginning of each line (with manual tweaking of the first and last lines). Save FILES.TXT Open FILES1.TXT in the text editor and with some thoughtful and creative "String Search and Replace" convert this list into the required filenames. Using the Block Mode Selection feature, copy this column of file names. Open FILES.TXT and paste this block into the far right field of the first row (making sure the block does not crash into the existing text.) Save FILES.TXT I then open FILES.TXT in CuteHTML because it has a "Code Optimizer" feature that allows me to remove all extra spaces from the file. Save the FILES.TXT as FILES.BAT Back in DOS run FILES and WOOSH!... easy-peasy. The whole process usually goes pretty quickly and is the best way I have found to deal with insanely punctuated filenames. I know this is nowhere near as elegant as you where hoping for but that is what I would be doing. change L to L00, change L001 to L1 to get the hundreds and manually fix L1.txt to L001.txt and on like that. more power to you!

                          1 Reply Last reply
                          0
                          • T TheF0rmatter

                            For files with numbers less than 10: FOR /L %F in (1,1,9) DO REN L%F.txt L00%F.txt For files with numbers from 10 to 99: FOR /L %F IN (10,1,99) DO REN L%F.txt L0%F.txt You could expand this out with a check to make sure the file exists: FOR /L %F IN (1,1,9 DO IF EXIST L%F.txt REN L%F.txt L00%F.txt

                            R Offline
                            R Offline
                            Russell
                            wrote on last edited by
                            #31

                            that was what I was looking for! thank you -------------------------------------------------------------------- If someone in future will have the same problem I also report here a more complex script I prepared before reading this reply that does the same thing (I hope :~). Because for me it is trivial to not change absolutely the name of the files, then the script is very robust on this feature (and it display a sort of report to check all the progress) Thanks again to all

                            @echo off

                            @echo File 001 to 009
                            set /a cnt1=1
                            :DATA0109
                            IF NOT EXIST L%cnt1%.sg2 @echo L%cnt1%.sg2 not found
                            IF EXIST L%cnt1%.sg2 @echo rename L%cnt1%.sg2 L00%cnt1%.sg2
                            IF EXIST L%cnt1%.sg2 rename L%cnt1%.sg2 L00%cnt1%.sg2
                            set /a cnt1+=1
                            if %cnt1%==10 goto :DATA1099BEGIN
                            goto :DATA0109

                            :DATA1099BEGIN
                            @echo File 010 to 099
                            set /a cnt1=0
                            set /a cnt2=1
                            :DATA1099
                            IF NOT EXIST L%cnt2%%cnt1%.sg2 @echo L%cnt2%%cnt1%.sg2 not found
                            IF EXIST L%cnt2%%cnt1%.sg2 @echo rename L%cnt2%%cnt1%.sg2 L0%cnt2%%cnt1%.sg2
                            IF EXIST L%cnt2%%cnt1%.sg2 rename L%cnt2%%cnt1%.sg2 L0%cnt2%%cnt1%.sg2
                            set /a cnt1+=1
                            if %cnt1%==10 set /a cnt2+=1
                            if %cnt1%==10 set /a cnt1=0
                            if %cnt2%==10 goto :EXIT
                            goto :DATA1099

                            :EXIT
                            pause
                            goto :EOF


                            Russell

                            1 Reply Last reply
                            0
                            • T TheF0rmatter

                              For files with numbers less than 10: FOR /L %F in (1,1,9) DO REN L%F.txt L00%F.txt For files with numbers from 10 to 99: FOR /L %F IN (10,1,99) DO REN L%F.txt L0%F.txt You could expand this out with a check to make sure the file exists: FOR /L %F IN (1,1,9 DO IF EXIST L%F.txt REN L%F.txt L00%F.txt

                              I Offline
                              I Offline
                              InfinitelyRemote
                              wrote on last edited by
                              #32

                              Gotta LOVE that FOR-IN-DO!! L_O_
                              VE This Suggestion!

                              1 Reply Last reply
                              0
                              • R Rajesh R Subramanian

                                +1 for BRU! It works great. :)

                                There are some really weird people on this planet - MIM.

                                D Offline
                                D Offline
                                Dale Barnard
                                wrote on last edited by
                                #33

                                BRU has been solid and great for years. You have to upgrade to use it across a network, though.

                                1 Reply Last reply
                                0
                                • H Henry Minute

                                  I think the best way to do this is to use a batch file and the FOR command. Take a look at this[^] for some ideas.

                                  Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”

                                  E Offline
                                  E Offline
                                  edmurphy99
                                  wrote on last edited by
                                  #34

                                  using the old %%n will work for %%n in (\\directory\filename*.txt)

                                  1 Reply Last reply
                                  0
                                  • L Lost User

                                    Aww, you hurt my feelings. I was just starting to feel special. :) Just kidding - that Total Commander thing does look pretty nice.

                                    N Offline
                                    N Offline
                                    Naruki 0
                                    wrote on last edited by
                                    #35

                                    No offense. I remember when I had to edit huge (for the early 90s) 3MB text files and I used WordPerfect Editor because of all the macro functions. I occasionally wrote little macros for tasks like this to create a batch file. This is about the level of using Excel. It works in a pinch, but... Later I was introduced to both Norton Commander and Sage Professional Editor, and things got even better. SPE was a dream, as it could edit multiple docs at the same time and its macro language used AWK. The consultant who introduced it to us had some nifty tricks to automatically open those text files and jump to the line in the error log. Needless to say I quickly abandoned WP Editor. Then Win95 came out, Norton made one last version of Commander for that platform, SPE changed from a DOS based to a Win95 editor renamed Preditor, and life was looking good. Then Norton Commander was gone, and Preditor was bundled into some insanely overpriced corporate enterprise suite and lost to me forever. I despaired. Eventually I found my first NC clone called Volkov Commander, and it was a decent but slightly buggy thing. Never did find a text editor with an AWK-like macro language. And maybe ten years ago I discovered Windows Commander, subsequently renamed to Total Commander when Microsoft threatened them. It was a superb NC clone, no bugs. And in the years since, he has added features that just make it better and better. Some of them I never used for the longest time, but as I found a need for them I realized just how powerful they are. That file rename feature is one of the incredible ones when you need it. I realize that in Linux this is all done with too clever by half scripts at the command line, but that has never really appealed to me. I like a good GUI. Total Commander makes that stuff easy.

                                    Narf.

                                    1 Reply Last reply
                                    0
                                    • R Russell

                                      I have to rename in some folders many file. The file are named like:

                                      L1.txt
                                      L2.txt
                                      ...
                                      L9.txt
                                      L10.txt
                                      ...
                                      L99.txt
                                      L100.txt
                                      ...

                                      Now, to apply some code, I need that the names changes to

                                      L001.txt
                                      ...
                                      L009.txt
                                      L010.txt
                                      ...
                                      L099.txt
                                      L100.txt

                                      I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                                      rename L?.txt L00?.txt
                                      rename L??.txt L0??.txt

                                      but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                                      Russell

                                      E Offline
                                      E Offline
                                      englebart
                                      wrote on last edited by
                                      #36

                                      Write a program in your favorite language on any platform to generate a throw away batch file. Don't waste too much time messing with all of the DOS quirks. DONT FORGET TO LEAVE ROOM FOR EXPANSION! 110 files today is 100,000 files tomorrow! example in C int i; for (i = 1; i <= 100; ++i) printf("ren L%d.txt L%5.5d.txt\r\n"); capture the output via: a.exe > myrename.bat myrename.bat

                                      R 1 Reply Last reply
                                      0
                                      • R Russell

                                        I have to rename in some folders many file. The file are named like:

                                        L1.txt
                                        L2.txt
                                        ...
                                        L9.txt
                                        L10.txt
                                        ...
                                        L99.txt
                                        L100.txt
                                        ...

                                        Now, to apply some code, I need that the names changes to

                                        L001.txt
                                        ...
                                        L009.txt
                                        L010.txt
                                        ...
                                        L099.txt
                                        L100.txt

                                        I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                                        rename L?.txt L00?.txt
                                        rename L??.txt L0??.txt

                                        but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                                        Russell

                                        N Offline
                                        N Offline
                                        Noel Paricollo 2
                                        wrote on last edited by
                                        #37

                                        BetterFileRename: http://www.publicspace.net/windows/BetterFileRename/index.html[^]

                                        NoelPV2

                                        1 Reply Last reply
                                        0
                                        • R Russell

                                          I have to rename in some folders many file. The file are named like:

                                          L1.txt
                                          L2.txt
                                          ...
                                          L9.txt
                                          L10.txt
                                          ...
                                          L99.txt
                                          L100.txt
                                          ...

                                          Now, to apply some code, I need that the names changes to

                                          L001.txt
                                          ...
                                          L009.txt
                                          L010.txt
                                          ...
                                          L099.txt
                                          L100.txt

                                          I was thinking to use the old DOS. I was hoping to use a couple of command to solve the problem. Something like

                                          rename L?.txt L00?.txt
                                          rename L??.txt L0??.txt

                                          but it looks to not work as desired. I think it understands the 'input' names, but wrong to interpret the second string of the command. any expert on the 'old' DOS? :)


                                          Russell

                                          D Offline
                                          D Offline
                                          da808wiz
                                          wrote on last edited by
                                          #38

                                          FYI, I would do it like this (from the command prompt, not from a batch file): for %f in (1 2 3 4 5 6 7 8 9) do rename L%f.txt L00%f.txt for %f in (1 2 3 4 5 6 7 8 9) do for %g in (0 1 2 3 4 5 6 7 8 9) do rename L%f%g.txt L0%f%g.txt that would work to rename the 1-99 files. The 100 file is already in that format. Sincerely G

                                          R J 2 Replies Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups