First, I'd like to thank anyone who can help in advance, I haven't done any batch scripts like this in years and being 'rusty' is an understatement. I have a lot of files on a mapped drive that I want to do some work with without risking damage to those files so I'm trying to create a local version of 'fake' files so no harm if something gets screwed up.
This is all being done on a Windows 7 machine, so I started with running the following to get the entire directory listing to manipulate:
dir /b M:\ > movies.txt
From there, if I run the following, I'm able to get individual 0 byte fake files based on the lines inside 'movies.txt':
for /F "eol=; tokens=1* delims=," %%i in (movies.txt) do @echo.> %%i.avi
Or if I run the following, I'll get empty directories based on 'movies.txt':
for /F "delims=~" %%f in (movies.txt) DO MD "%%f"
The problem with either of these commands is that I either get a pile of files all lumped into the root folder (first 'for' command) or I get empty directories (second 'for' command) but I can't seem to figure out how to get the fake files into the folders.
Examples: If Mapped Drive "M" has these movie files:
M:\Las Vegas Trip (2009)\Las Vegas Trip (2009).avi
M:\Las Vegas Trip (2010)\Las Vegas Trip (2010).avi
then 'movies.txt' will appear as:
Las Vegas Trip (2009)
Las Vegas Trip (2010)
and the first command will result in:
D:\Las Vegas Trip (2009).avi
D:\Las Vegas Trip (2010).avi
or the second command will result in:
D:\Las Vegas Trip (2009)\
D:\Las Vegas Trip (2010)\
But what I need is:
D:\Las Vegas Trip (2009)\Las Vegas Trip (2009).avi
D:\Las Vegas Trip (2010)\Las Vegas Trip (2010).avi
I've been searching the internet for days and can't seem to find anything that will give me the desired results... I did find a slightly similar 'issue' elsewhere where they wanted to create the folders based on file name, but they wanted to auto-rename the end result filename which wont work. (Yes I tried to modify their command to work, but no changes I could come up with would produce anything but errors.) You can see the above mentioned method here (on site).
Modifications I attempted to the code from the link included:
for /f %%f in ('dir *.png /b') do md %%~nf & move %f .\%%~nf\0000.png <- original
for /f %%f in ('dir *.avi /b') do md %%~nf & move %f .\%%~nf\*.avi
for /f %%f in ('dir *.avi /b') do md %%~nf & move %f .\%%~nf\
for /f %%f in ('dir *.avi /b') do md %%~nf & move %f .\%%~nf
In each case I was given an error in reference to the final part of the code "%%~nf*.avi" section.
Any ideas of how to either modify that code to work for me or something else that would work would be greatly appreciated.
-------Edited Part------- I tried changing my batch file to use the command provided in the post below and it didn't seem to work:
cd Movies2
dir /b %MovieSource% > movies.txt
for /f "delims=" %%f in ('dir *.avi /b') do md "%%~nf" & move "%~f" ".\%%~nf\*.avi"
rem for /F "eol=; tokens=1* delims=," %%i in (movies.txt) do @echo.> %%i.avi
rem FOR /F "delims=~" %%f in (movies.txt) DO MD "%%f"
I also tried putting the first 'for' command second and unREM'd the other 'for' command so that it would create the *.avi's beforehand, thinking that might work, but trying it either way gives the same error.
The following usage of the path operator in batch-parameter
substitution is invalid: %~f" ".\%%~nf\*.avi"