parkesel
Goto Top

Batch file TapeID in Variable schreiben

Hallo,
habe eine Problem, ich möchte bei Arcserve GFS Sicherstellen das Montag die Montagskassette, Dienstag die Dienstagskassette usw eingelegt ist, das klappt bei GFS recht gut wenn kein Feiertag dazwischen kommt oder ein user vergisst das band einzulegen.

Deshalb habe ich mir ein paar batch Dateien geschrieben welche die Kassetten verschieben.

Arcserve kann mit Command Line perfekt gesteuert werden doch nun zu meinen Problem:

Rufe ich bei Arcserver diesesn befehl auf:
ca_dbmgr -cahost 192.168.2.3 -show poolmedia GFSPOOL_DLY >c:\dly.txt

so erstellt er mir folgende Datei

SAVE SET:

NO. TAPE-NAME SERIAL# TAPEID SQ# FORMAT-ON EXPIRES-ON PURGED KB WRITTEN HOST NAME
1 F-GFSPOOL-DI-06.11.12 1300002 dae1 1 06.11.2012 23:01:56 25.10.2015 13:59:38 NO 431420224 SERVER
2 F-GFSPOOL-DO-08.11.12 1300004 7524 1 08.11.2012 23:01:58 25.10.2015 14:03:06 NO 440917568 SERVER
3 F-GFSPOOL-MI-07.11.12 1300003 763 1 07.11.2012 23:01:54 25.10.2015 14:01:18 NO 432238272 SERVER

SCRATCH SET:

NO. TAPE-NAME SERIAL# TAPEID SQ# FORMAT-ON EXPIRES-ON PURGED KB WRITTEN HOST NAME
1 F-GFSPOOL-MO-05.11.12 1300001 7805 1 05.11.2012 23:01:48 25.10.2015 13:58:00 NO 431426432 SERVER


Da das verschieben der Bänder nicht mit der Seriennummer sondern mit der ID funktioniert und sich die ID leider immer ändert bräuchte ich eine abfrage der batch Datei, ich schaffe es leider nicht face-sad

es sollte also die TAPEid der kassette mit SN 1300001 in die Variable %montag% geschrieben werden, 1300002 in die Variable %Dienstag% etc. In meinen Beispiel sollte also %montag% 7805 werden.

Somit könnte ich die Bänder mit
ca_dbmgr -cahost 192.168.2.3 -mediapool move %montag% "GFSPOOL_DLY" "GFSPOOL_DLY" scratch
verschieben.

Anbei der Link zur orginal Datei

https://dl.dropbox.com/u/39220034/backup/dly.txt

Ich würde mich sehr freuen wenn mir jemand behilflich sein könnte, irgendwie müste dies doch mit findstr oder irgendwie lösbar sein?

1000 Dank

Content-ID: 194129

Url: https://administrator.de/forum/batch-file-tapeid-in-variable-schreiben-194129.html

Ausgedruckt am: 22.12.2024 um 17:12 Uhr

rubberman
rubberman 13.11.2012 aktualisiert um 01:27:08 Uhr
Goto Top
Hallo parkesel,

wenn ich es richtig verstanden habe, ist das mit ein paar Schleifen fix getan.
Zum Test:
@echo off &setlocal
 
for /f "tokens=3,4" %%i in ('findstr "130000" "C:\dly.txt"') do (  
  for %%k in ("1 montag","2 dienstag","3 mittwoch","4 donnerstag","5 freitag","6 samstag","7 sonntag") do (  
    for /f "tokens=1,2" %%l in (%%k) do (  
      if "%%i"=="130000%%l" set "%%m=%%j"  
    )
  )
)

echo Test:
echo Montag %montag%
echo Dienstag %dienstag%
echo Mittwoch %mittwoch%
echo Donnerstag %donnerstag%
echo Freitag %freitag%
echo Samstag %samstag%
echo Sonntag %sonntag%

pause
Versteht sich von selbst, dass nur IDs zugewiesen werden, die auch in der Textdatei zu finden sind.

Das Ganze sollte auch ohne temporäre Datei laufen, wenn du Zeile 3 wie folgt änderst:
<code type="plain>
for /f "tokens=3,4" %%i in ('ca_dbmgr -cahost 192.168.2.3 -show poolmedia GFSPOOL_DLY^|findstr "130000"') do (


Grüße
rubberman
parkesel
parkesel 13.11.2012 um 02:10:00 Uhr
Goto Top
Woow super Danke,

habe es getestet funktioneirt perfekt:

mache nun 4 Tages Jobs

@echo off &setlocal

for /f "tokens=3,4" %%i in ('ca_dbmgr -cahost 192.168.2.3 -show poolmedia GFSPOOL_DLY^|findstr "130000"') do (
for %%k in ("1 montag","2 dienstag","3 mittwoch","4 donnerstag","5 freitag","6 samstag","7 sonntag") do (
for /f "tokens=1,2" %%l in (%%k) do (
if "%%i"=="130000%%l" set "%%m=%%j"
)
)
)

ca_dbmgr -cahost 192.168.2.3 -mediapool move %donnerstag% "GFSPOOL_DLY" "GFSPOOL_DLY" save
ca_dbmgr -cahost 192.168.2.3 -mediapool move %mittwoch% "GFSPOOL_DLY" "GFSPOOL_DLY" save
ca_dbmgr -cahost 192.168.2.3 -mediapool move %dienstag% "GFSPOOL_DLY" "GFSPOOL_DLY" save
ca_dbmgr -cahost 192.168.2.3 -mediapool move %montag% " GFSPOOL_DLY" "GFSPOOL_DLY" scratch


5 Freitagsjobs und 12 Monatsjobs

Wobei ich das scratch immer verschiebe Diestags auf Dienstag usw.

jeden 28 des monats würde ich den Monatsjob ausführen, währe es machbar das die Batch Datei im Oktober bei Oktober das scratch anhängt und bei den restlichen monaten save? usw?

nene bin so auch seeeeeeeeeehr zufrieden.

Danke für dein Hilfe

P.s bist du programmierer? oder wo lernt man sowas?

Thx
rubberman
rubberman 13.11.2012 um 18:56:26 Uhr
Goto Top
Hallo parkesel.

Zitat von @parkesel:
5 Freitagsjobs und 12 Monatsjobs

Wobei ich das scratch immer verschiebe Diestags auf Dienstag usw.

jeden 28 des monats würde ich den Monatsjob ausführen, währe es machbar das die Batch Datei im Oktober bei Oktober das scratch anhängt und bei den restlichen monaten save? usw?
Sorry, bin kein Admin und verstehe nur ansatzweise was du da tust. (Immerhin hat mir Google was brauchbares zur Abkürzung GFS ausgespuckt. Das Prinzip ist mir also wenigstens klar face-wink)
Wie wäre es wenn du mit mehr als einer Batchdatei arbeitest und per geplantem Task die entsprechende Datei aufrufst, um deine zusätzlichen Anforderungen zu erfüllen?

Zitat von @parkesel:
P.s bist du programmierer? oder wo lernt man sowas?
Nope. Ich versuche nur mir etwas automatisierte Unterstützung bei meiner täglichen Arbeit zu verschaffen. Da ist man entweder ständig auf fremde Hilfe angewiesen oder man beschäftigt sich selbst ein wenig mit Scripting/Programmierung. Ich habe mich halt für Letzteres entschieden und Spaß damit.

Grüße
rubberman
parkesel
parkesel 14.11.2012 um 12:14:01 Uhr
Goto Top
Hallo,

Ich bedanke mich nochmal recht Herzlich.

Also deine abfrage funktioniert perfekt, nun bin ich mir sicher das Montags die 130001 er kassette im Pool ist.

Vielen Dank und hoffe ich kann mich bei Batch programmierung nochmal bei dir melden.

LG

helmut