anon0
February 2nd, 2009, 05:13 PM
hi all, it was suggested that I post this here:
I'm trying to have a main batch file recurse through its subdirectories and call any batch files it encounters there. My problem is limiting the scope each batch to its own subdirectory. It's not really DOS but the Windows command prompt.
say you have these files
c:\temp\batch.bat
c:\temp\folder1\batch_deletes_txt.bat
c:\temp\folder1\file1.txt
c:\temp\folder1\file2.doc
c:\temp\folder2\batch_deletes_doc.bat
c:\temp\folder2\file3.txt
c:\temp\folder2\file4.doc
So, batch.bat should call batch_deletes_txt.bat which deletes file1.txt only (not file3.txt), and batch.bat should also call batch_deletes_doc.bat which deletes file4.doc only (not file2.doc).
My contents:
batch.bat:
for /r %%X in (*.bat) do if NOT %%X == %0 %%X
REM ^ the "if not" is to prevent infinite loops.
batch_deletes_txt.bat:
for /r %%X in (*.txt) do del "%%X"
batch_deletes_doc.bat:
for /r %%X in (*.doc) do del "%%X"
This doesn't work because the scope of each script is c:\temp, ie. not local. How do I fix this?
(My real goal is not deleting files, this is just an example)
I'm trying to have a main batch file recurse through its subdirectories and call any batch files it encounters there. My problem is limiting the scope each batch to its own subdirectory. It's not really DOS but the Windows command prompt.
say you have these files
c:\temp\batch.bat
c:\temp\folder1\batch_deletes_txt.bat
c:\temp\folder1\file1.txt
c:\temp\folder1\file2.doc
c:\temp\folder2\batch_deletes_doc.bat
c:\temp\folder2\file3.txt
c:\temp\folder2\file4.doc
So, batch.bat should call batch_deletes_txt.bat which deletes file1.txt only (not file3.txt), and batch.bat should also call batch_deletes_doc.bat which deletes file4.doc only (not file2.doc).
My contents:
batch.bat:
for /r %%X in (*.bat) do if NOT %%X == %0 %%X
REM ^ the "if not" is to prevent infinite loops.
batch_deletes_txt.bat:
for /r %%X in (*.txt) do del "%%X"
batch_deletes_doc.bat:
for /r %%X in (*.doc) do del "%%X"
This doesn't work because the scope of each script is c:\temp, ie. not local. How do I fix this?
(My real goal is not deleting files, this is just an example)