1

バッチファイルにforループがあります:

@echo off
set logpath1=C:\path\to\first\log
set logpath2=C:\path\to\second\log
FOR %%G IN (%logpath1% %logpath2%) DO (
  pushd %%G
  pushd ..\
  for %%D IN (%CD%) DO SET "dirname=%%~nxD"
  popd
  echo Will prefix files in %%G with %supername%
  :: do operations.
  popd
)

ただし、これによって作業ディレクトリが変更されることはないようです。からスクリプトを実行した場合

C:\tmp\path\to

それから私は得る

Will prefix files in C:\path\to\first\log with tmp
Will prefix files in C:\path\to\second\log with tmp 

私の目的は、複数のディレクトリにあるログファイルを圧縮することです。%CD%の代わりにchdir、cd / d、&〜pd0を試し、高低を検索しました。なぜこれが機能しないのか誰かに教えてもらえますか?

4

1 に答える 1

2

置く

setlocal enabledelayedexpansion

バッチファイルの先頭で、ループの!CD!代わりに使用します。%CD%設定されている場所によっては、そこでも%supername%使用する必要がある場合が!あります。

于 2012-04-27T20:18:05.863 に答える