How to return to the original directory after invoking change directory in DOS batch?

xport picture xport · Aug 9, 2011 · Viewed 24.9k times · Source

I want to create a batch file, batch.bat, that accepts 2 mandatory arguments:

  • %1 represents a path relative to the current directory.
  • %2 represents a filaname.

Assume the current directory is father\me\.

User can use this batch as follows:

  • batch child/grandchild log
  • batch ../brother log

The job description of batch.bat is as follows.

  1. Moves to %1 directory,
  2. Iterates all *.tex file in the %1 directory.
  3. Save the result in the directory before moving.

The following is the incomplete code:

rem batch.bat takes 2 arguments.
cd %1
dir /b *.tex > <original directory>\%2.txt

How to return to the original directory after invoking change directory in DOS batch?

Answer

Aacini picture Aacini · Aug 9, 2011

If you want to RETURN to original directory, do the first change with PUSHD and return with POPD. That is, moves to %1 directory must be achieved with

PUSHD %1

instead of CD %1, and the return is achieved with

POPD

instead of CD where?

If you want to ACCESS the original directory after changed it, store it in a variable this way:

SET ORIGINAL=%CD%

and use %ORIGINAL% later, for example:

dir /b *.tex > %original%\%2.txt