Help with DOS batch script - nested script calling
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)
Re: Help with DOS batch script - nested script calling
I'm no batch script expert, but I *do* know that cd is the command used to change directories. Have you tried using that?
Have you considered perl? You could even write it inline on the command line if you'd like: perl -e "perl commands;"
Re: Help with DOS batch script - nested script calling
I did think about using cd, but the question is how do you ask the first batch to cd into folders dynamically?
I'm only vaguely familiar with perl. An ordinary batch file would be preferred in this case...
Re: Help with DOS batch script - nested script calling
Use Powershell 2.0 CTP. It's a replacement for the DOS command language with its commandlets. You can use For-Each to loop thru folders dynamically
Re: Help with DOS batch script - nested script calling
Quote:
Originally Posted by
dglienna
Use Powershell 2.0 CTP. It's a replacement for the DOS command language with its commandlets. You can use For-Each to loop thru folders dynamically
thanks, I've never used it. Could someone explain how to do this in Powershell?