1

こんにちは、ディレクトリを掘り下げて、そのサブディレクトリ内のすべてのファイルが別のディレクトリと同じであるかどうかを確認するバッチファイルを作成しようとしています(同じ名前と同じサブディレクトリ名を持つ)

元:

C:/Users/Administrator/desktop/directory1/global/config/project.config

C:/directory2/global/config/project.config

for ループで比較する必要があるすべてのファイルを取得できます。echo %%f により、次のようなパスが得られます。

C:/Users/Administrator/directory1/global/config/project.config

しかし、FC コマンドでファイルを簡単に比較できるように、先頭を削除して新しい変数に格納したいと考えています。for ループで文字列置換を正しく行う方法がわかりません。これだけを取得したい:

/global/config/project.config

今のところ私のコード

set b="c:\Users\Administrator\desktop\"
set j=""
for /f %%f in ('dir /a:-d /s /b /r c:\Users\Administrator\desktop\global') do (
set c=%%f
%c:b=j%
echo %%c
)
4

2 に答える 2

3
@echo off
set "dir1=c:\smth"
set "dir2=c:\dir\smth2"

setlocal enableDelyaedExpansion
for /f %%F in ('dir  /a:-d /s /b /r "%dir1%"') do (
  set "file_path=%%F"
  if not exist "!file_path:%dir1%=%dir2%!" (
     echo file %%F does not exists in %dir2% 
  )
)
endlocal
于 2013-10-10T18:14:06.297 に答える