2016-04-20 9 views
0

Könnte mir jemand in diesem Batch-Skript helfen.Batch-Skript zum Speichern bestimmter Ausgabedaten in einer Variablen

Ich muss den folgenden Befehl svn info ausführen und bestimmte Details in einer Variablen erhalten.

Path: . 
Working Copy Root Path: C:\Users\jslevin\Desktop\SQL 
URL: https://ofss220383.in.oracle.com:18080/svn/SVN_DEMO/branches/FCUBS_TEST/Soft/AM/SQL 
Relative URL: ^/branches/FCUBS_TEST/Soft/AM/SQL 
Repository Root: https://ofss220383.in.oracle.com:18080/svn/SVN_DEMO 
Repository UUID: 866b0b85-a196-4771-a359-d37e344426b2 
Revision: 47 
Node Kind: directory 
Schedule: normal 
Last Changed Author: [email protected] 
Last Changed Rev: 47 
Last Changed Date: 2016-04-11 18:01:56 +0530 (Mon, 11 Apr 2016) 

Var1 = SVN_DEMO (This variable should hold the Repository Root: line and should get the Last word i.e., SVN_DEMO) 

Var2 = FCUBS_TEST (Should grep URL: and hold the word after branches alone i.e., FCUBS_TEST) 

Und ich erstelle einige temporäre Dateien in meinem Skript. Am Ende des Skripts muss ich alle verfügbaren Dateien finden und sie löschen.

+2

wo der Batch-Skript, müssen Sie mit Hilfe? – Stephan

+0

@Stephan, ich benutze awk, grep, um mein Ziel in der Shell zu erreichen, frage mich aber, wie man findstr und grep im Stapel verwendet, um mein Ergebnis zu erreichen. Irgendeine Idee geschätzt. – John

Antwort

0

wahrscheinlich noch einfacher mit Unix-Tool, aber keine große Herausforderung mit reiner Charge (hielt es einfach, ohne Optimierungen):

@echo off 
REM get the two important lines into variables: 
for /f "tokens=*" %%a in ('find "Repository Root" file.txt') do set var1=%%a 
for /f "tokens=*" %%a in ('find "Relative URL" file.txt') do set var2=%%a 

:loop 
REM var1 - remove from the beginning until (including) the first '/': 
set var1=%var1:*/=% 
REM if there is another '/' then do it again: 
if "%var1%" neq "%var1:/=%" goto :loop 
REM kind of "brute force", isn't it? 

REM var2: remove from the beginning until (including) 'branches/': 
set var2=%var2:*branches/=% 
REM take the first token by '/' as delimiter: 
for /f "delims=/" %%a in ("%var2%") do set var2=%%a 

set var 
+0

Danke Stephen. Ihre Idee veranlasste mich zu modifizieren und die Ergebnisse zu bekommen, was ich erwartet hatte. Also hier ist mein Code ........................................... .for/f "Tokens = 4 delims = //" %% i in ('findstr/ilc: "Repository-Stamm" "svninfo"') do ( set var1 = %% i ) für/f "Tokens = 3 delims = ^/"%% j in ('findstr/ilc:" Relative URL "" svninfo "') do ( gesetzt var2 = %% j ) echo% var1% 1> & 2 echo% var2% 1> & 2 exit 1 – John

+0

sei vorsichtig: 'tokens =' liefert falsche Ergebnisse, wenn dein Pfad eine andere Tiefe hat. Deshalb habe ich keine Token verwendet. und nahm "den letzten aus dem Repository" und "neben" Filialen "". – Stephan

+0

@Stephen, Die Zeichenlänge, die ich abrufen muss, ist immer stabil. Also ich denke, es wird mir keine Probleme machen ... Wird es sich auch in diesem Fall schlecht verhalten? Übrigens vielen Dank für Ihre Unterstützung. – John

Verwandte Themen