2014-01-07 4 views
1

두 변수의 findstr을 수행하는 배치 스크립트를 작성하려고합니다. 나는 변수가 필요한 특정 파일을 읽고있다. 내가 필요로하는findstr과 변수를 사용하여 드라이브를 매핑하는 배치 스크립트 만들기

변수는

NetPath= 
NetPathmed= 

입니다 그리고 내 목표는 네트워크 드라이브 매핑을 수행하는 두 개의 변수를 사용하는 것입니다. 첫 번째 findstr에서 나는 NetPath= 이후 모든 것을 필요로하고 두 번째에는 문자열에서 특정 양의 데이터 만 필요합니다. 조금 고정 -이

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

난 그냥 그럼이

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

수행 * ... 테스트 후 net useecho를 교체하고 오프해야합니다, 당신이 필요로하는 고정 텍스트와 함께 다양한 요소 %var1%%%c%%d 조립입니다 * 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 

같은 모습을 만들어 예를 들어, 배치를 IP 주소

이 필요한 것처럼 정상적인 NetPathMed 보인다. 파일에서 추출한 요소가 실제로 어디에 있는지, 명령에 어셈블 할 요소를 알려주는 것은 매우 어렵습니다.

'NetPathMed in your code but NetPathmed in the data line you have given. If you don't use the/i switch, findstr'을 사용하면 악화됩니다. 대소 문자를 구분합니다.

다른 오류 :

cd::가 없어야합니다.

for /f의 괄호 안에있는 명령은 SINGLE 따옴표로 묶어야합니다. 도움이되었을 것이다 생성되는 두 파일의 관련 내용과 필요한 명령의 예 - FINDSTR 난 당신이 var1var2 또는 무엇에 배치 할 데이터를 원하는 여부를 말할 수 "double quotes"

을 좋아한다.

내가 (즉, 당신이 말한 것 때문에)

%%a의 첫 번째 부분은 var1에 첫 번째 파일에서 선택된 줄에 = 후 모든 텍스트를 할당하기로 결정했습니다 token1 = NetPath (사용되지 않음) 두 번째 토큰 (* = 행의 나머지)를 사용하면, 당신은 단지 두 번째와 세 번째 토큰을 사용하여 게시 된 정확한 DATA를 분석, (%%b)

마찬가지로 다음 metavariable에 나타납니다

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

/\이 아니므로 유의하십시오. 다른 동물. 분필과 치즈.

그래서 - 당신이해야 할 것 모두