terror4tec
Goto Top

Per Befehlszeilenparameter auf Konstante zugreifen

Hallo liebe Gemeinde,
ich komme nicht weiter... bitte werft Hirn vom Himmel. Das meiste aus diesem Batch entstammte, zumindest als Anregung aus diesem Forum. An dieser stelle ein *DICKES* Danke an den Nager aus Bremen, der hier *GRATIS* die Briefkastenoma spielt. Und das in bemerkenswerter Qualität. Nochmal dickes *Danke*!!!!

Nun zum Problem:
Im Batch wird nicht wenn %1=K ist, dieses "K" als Konstante %K% erkannt, auch nicht mit doppelt % ' " & (alles probiert). Das währe aber schrecklich schön, wenn %1 als "normaler" Buckstabe erkannt würde und folglich %K% auch den Inhalt der Konstanten "K" ausgeben würde. Aber wie - bitte lasst mich nicht dumm sterben....

Hier das Batch:

@echo off
REM BEWERTUNG DES FREIEN PLATZES AUF Remote LAUFWERKEN
REM fuer engl. Umgebungebungen

REM Fuer spaetere Bearbeitung:
SET TRMP=c:\Cntrl\Auslastung_REMOTE_DRIVES.txt
if exist %TRMP% del %TRMP%

REM (QUELLE) VERZEICHNIS, welches kopiert werden soll (wg. Größe wichtig)
set verzeichnis="W:\vm"  

REM (ZIEL) Ordner [Freigabename]
SET BACKUPDIR=_B_C_U_P_

REM (Anmeldeinformation) ...der 3.Teil bei net use...
SET K=\\10.17.125.168\%BACKUPDIR% /user:Administrator@LULU.Local h4c3rz
SET L=\\192.168.10.2\%BACKUPDIR% /user:Biber hilfbitte

REM Menge der Laufwerksbuchstaben die geprüft werden sollten
SET LANdrives=K,L

REM Checken der Laufwerke...Schleife...

:loop_REMOTE_drives
    for %%i in (%LANdrives%) do (call:TSTRVOL %%i)

:TSTRVOL %1
IF EXIST %1: net use %1: /delete
REM ***************************************************************************************************************
REM UND HIER HAUT ES NICHT HIN. HIER wird nur ein Buchstabe erscheinen aber nicht der Inhalt von z.b. %K% 
IF NOT EXIST %1: net use %1: % %%1 %
REM ***************************************************************************************************************

rem ab hier nur noch gedöns...
SET volume="%1:"  
if %1!==! goto :eof

FOR /F "tokens=3 delims= " %%i in ('dir /s %verzeichnis%^|find "File(s)"') do set size=%%i  
FOR /F "tokens=3 delims= " %%i in ('dir %volume%^|find "Dir(s)"') do set vsize=%%i  
set gb=%size:~-0,-12%
set vgb=%vsize:~-0,-12%

set /a q=%vgb%-%gb%
set /a z=%q%/%gb%

IF %z% LEQ 9 Set ZZ=0%z%
IF %z% GEQ 10 SET ZZ=%z%

@echo Reserve: %zz% auf Laufwerk %1:
@echo %zz%#%1 >>%TIMP%
sort %TIMP% /R /O %TIMP%
type %TIMP%
goto:eof


[Edit Biber] Codetags nachgetragen. [/Edit]

Content-ID: 127368

Url: https://administrator.de/forum/per-befehlszeilenparameter-auf-konstante-zugreifen-127368.html

Ausgedruckt am: 23.12.2024 um 18:12 Uhr

rubberman
rubberman 18.10.2009 um 15:39:34 Uhr
Goto Top
Hallo Terror4tec,

grob überflogen: Kann es sein dass du zwar auf der einen Seite schon den Buchstaben K als Laufwerksbuchstaben, als auch im Anschluss den Inhalt der Variablen %K% verarbeiten willst?

Mal den betreffendenTeil für die Echo-Ausgabe skizziert:
@echo off &setlocal

REM (Anmeldeinformation) ...der 3.Teil bei net use...
SET K=\\10.17.125.168\%BACKUPDIR% /user:Administrator@LULU.Local h4c3rz
SET L=\\192.168.10.2\%BACKUPDIR% /user:Biber hilfbitte

REM Menge der Laufwerksbuchstaben die geprüft werden sollten
SET LANdrives=K L

REM Checken der Laufwerke...Schleife...

:loop_REMOTE_drives
for %%i in (%LANdrives%) do call :TSTRVOL %%i
pause
goto :eof

:TSTRVOL
echo %1
call echo %%%1%%
goto:eof

Hoffe das hilft schon mal zu erkennen, wie du das handlen müsstest.

Grüße
rubberman
Terror4tec
Terror4tec 18.10.2009 um 15:51:37 Uhr
Goto Top
Danke Rubberman,
Haut genau so hin... D*A*N*K*E !!!!!!!!
Das Geheimnis war der call... und die 3(!) vor und 2 (!) % danach...
Ich bin sooo glücklich..