簡體   English   中英

批量變量循環查詢

[英]Batch Variable Loop Inquiry

我正在嘗試創建一個批處理,以首先抓取目錄中的所有文件夾名稱並將其輸出到txt文件。

dir "C:\directory1\directory2\directory1\work" > C:\output.txt /b /o

然后,運行特定於程序的備份功能,該功能需要一個文件夾名稱才能與上述輸出匹配。 我可以通過循環發送它,但是我需要將名稱用作變量。 示例:我使用上面的輸出備份了一個名為“ Test_Test1”的文件夾和另一個名為“ Test2_Test3”的文件夾。 然后,我需要運行一個批處理命令,如果對一行執行它,它將類似於下面的語句

staging-backup Test_Test1 C:\BackupLocation\Test_Test1

我想通過抓取所有文件夾名稱,將它們放入文件中(如有必要),然后在所有行上運行上述命令,但同時更新名稱(參考位置)和備份位置文件夾(其中的Test_Test1)來自動化此過程將被創建)。

我可以使用DelayedExpansion來創建變量,但由於無法抓住這些變量並通過另一個循環輸入它們以運行批處理的暫存部分而無法解決問題,因此遇到了麻煩。

供參考,以下是我的DelayedExpansion設置@echo off set“ file = C:\\ output.txt”

setlocal EnableDelayedExpansion
<"!file!" (
  for /f %%i in ('type "!file!" ^| find /c /v ""') do set /a n=%%i && for /l     %%j in (1 1 %%i) do (
    set /p "line_%%j="
  )
)

echo Number of lines: !n! 
echo.
echo !n! > c:\lines.txt
echo Line contents:
for /l %%i in (1 1 !n!) do echo(!line_%%i!
echo.

pause

關於如何最好地解決這個問題的任何想法? 如果可能的話,我會將它們組合為1個批處理,因此我需要變量在工作完成時暫時停留。 我想我只是想弄清楚如何在我正在使用的staging-backup命令的變量中調用這些變量。

一個主意 :

@Echo off&cls
setlocal enabledelayedexpansion
set /a $count=1
for /f "delims=" %%a in ('dir "C:\directory1\directory2\directory1\work" /b/o') do (
  md "C:\BackupLocation\%%a-!$Count!" 2>nul
  staging-backup "%%a-!$Count!" "C:\BackupLocation\%%a-!$Count!"
  set /a $Count+=1
)

謝謝(你的)信息! 我將soem編輯為-!$ Count! 我將-1,-2等添加到文件夾中,我決定不這樣做,因為文件夾無論如何都是唯一的名稱。 我還發現我需要更改tad的格式,並在此結尾:

md "C:\BackupLocation\
setlocal enabledelayedexpansion
set /a $count=1
cd /d C:\staging-backup\location
for /f "delims=" %%a in ('dir "C:\directory1\directory2\directory1\work"     /b/o') do (
staging-backup "%%a" "C:\BackupLocation\%%a"
cd /d C:\staging-backup\location
set /a $Count+=1
)

我要進行一些其他更改,因為要添加一些日志記錄,所以這是我的主要障礙。 謝謝您的幫助!

暫無
暫無

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

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