簡體   English   中英

修改for循環批處理文件中的變量

[英]Modifying variable in a for loop batch file

嗨,我正在嘗試制作一個通過目錄挖掘的批處理文件,並檢查其子目錄中的所有文件是否與另一個目錄中的文件相同(具有相同的名稱和相同的子目錄名稱)

例如:

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
)
@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

使用調用函數的更好方法

setlocal enableDelyaedExpansion
for /f %%F in ('dir  /a:-d /s /b /r "%dir1%"') do call :foo %%F

:foo 
set "file_path=%1"
if not exist "!file_path:%dir1%=%dir2%!" (
echo file %1 does not exists in %dir2% 
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM