2014-01-07 35 views
1

所以我試圖創建兩個變量的findstr批處理腳本。我正在從一個特定的文件中讀取我需要的變量。創建一個使用findstr和變量映射驅動器的批處理文件

我需要的變量是

NetPath= 
NetPathmed= 

而我的目標是利用兩個變量做網絡映射驅動器。在第一個findstr我需要在NetPath=之後的所有內容,在第二個我只需要來自字符串的特定數量的數據。正常NetPathMed看起來像這樣

NetPathmed=\\**IPaddress**:C:\folder\file. 

我只需要IP地址

例如批處理我創造了這個樣子的

cd: C:\folder\ 
set var1="findstr 'NetPath=' file.ini" 
for /f "tokens=1,2 delims== " %%a in ("%var1%") do set net=%%a&set path=%%b 

Set var2= "findstr 'NetPathMed' opsetup.ini" 
for /f "tokens=1,2,3 delims==/ " %%c in ("%var2%") do set net=%%c&set path=%%d &set net=%%e 

net use var1(driveletter) \var2(IPaddress)\network folder /persistent:yes 
+2

做* * NOT **使用名爲** PATH **的用戶變量。它是一個保留名稱,用於指定要爲可執行文件搜索的目錄序列。 – Magoo

回答

0
cd C:\folder\ 
set var1='findstr "NetPath=" file.ini' 
for /f "tokens=1,* delims==" %%a in (%var1%) do set var1=%%b 

Set var2='findstr "NetPathMed" opsetup.ini' 
for /f "tokens=2,3 delims=\:" %%c in (%var2%) do ECHO elements %var1% %%c %%d: /persistent:yes 

好 - 固定了一下。很難判斷你從文件中提取的元素實際上是什麼,以及你希望將哪些元素組合到你的命令中。

使用'NetPathMed in your code but NetPathmed in the data line you have given. If you don't use the/i switch,使情況變得更糟。

其他錯誤:

cd:不應該有一個:

for /f的括號內的命令應包含在單引號中。 FINDSTR喜歡"double quotes"

我不能告訴你是否願意被放置在var1var2或什麼數據 - 的兩個文件的有關內容和所需的命令生成將是有益的例子。

我選擇了從第一個文件選擇行分配的所有文本的=後進入var1(因爲這是你說的話)

%%a第一部分是TOKEN1 = NetPath(未使用)第二令牌(* =該行的其餘部分)出現在下一metavariable(%%b

同樣地,解析所述EXACT DATA您發佈,你只使用第二和第三令牌

token1 is NetPathmed= 
token2 is **IPaddress** 
token3 is C 
token 4 is \folder\file. I just need the IP address 

請注意,您指定/而不是\。不同的動物。粉筆和奶酪。

所以 - 所有你需要做的是與你所需要的固定文本組裝的各種元素%var1%%%c%%d在一起,net use更換echo測試後,你應該關閉...

相關問題