Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Rückgabewert einer Variablen zuweisen (ohne Umweg einer Tempdatei)

Frage Entwicklung Batch & Shell

Mitglied: BigWim

BigWim (Level 2) - Jetzt verbinden

09.09.2010 um 09:33 Uhr, 9019 Aufrufe, 4 Kommentare

Hallo zusammen,

ein Bespiel (auf das wesentliche gekürzt):

Die For-Schleife ermittelt mir die ersten drei Ebenen der Verzeichnisstruktur.
Für jede Ebene wird per xcacls die Berechtigungen in eine Datei geschrieben.

01.
@echo off & Setlocal 
02.
 
03.
Set LogFile=%~n0.log 
04.
if exist %LogFile% del %LogFile% 
05.
 
06.
:QueryDir 
07.
for /f "tokens=1-4 delims=\" %%D in ('dir u:\daten\*.* /s /ad /b) do call :ScanDir "%%D\%%E\%%F\%%G" 
08.
goto :eof 
09.
 
10.
:ScanDir 
11.
xcacls %Pfadname% >>%logfile%


Mit
01.
type %logfile% | find /i /c "%1"
kann ich jetzt ermitteln, wie oft eine bestimmte Gruppe benutzt wird. Das Ergebnis ist eine Zahl.

Gibt es jetzt ein Konstrukt, dass mir die Rückgabe von type direkt einer Variabelen zuweist?
Also sinngemäß:
01.
Set Anzahl <= type %logfile% | find /i /c "%1"
Nach meinen Studien der Anleitungen und das Verfolgen der vielen Fragen, fürchte ich ja nicht. Aber es läßt mir halt keine Ruhe ....


Danke im voraus
Markus
Mitglied: miniversum
09.09.2010 um 11:12 Uhr
Das geht auch mit einer For Schleife:
01.
for /f "delims=" %%i in ('type %logfile% | find /i /c "%1"') do set Anzahl=%%i
Bitte warten ..
Mitglied: BigWim
09.09.2010 um 11:47 Uhr
Auf so etwas habe ich gehofft!

Aber leider bin ich zu doof, dass anzuwenden. Vielleicht kannst Du mir noch einmal auf die Sprünge helfen.

Die Zeile für sich in einer CMD bringt keine Fehlermeldung und (logischerweise) keine Ausgabemeldung.
Ein zusätzliche Zeile mit Echo %Anzahl% oder ein Anhängen mit & echo %Anzahl% = keine Fehlermeldung & keine Ausgabe
"Alles" andere bringt mir die Fehlermeldung: "|" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Ich habe ja auch oft das ^ in Zusammenhang mit diesem Konstrukt gesehen. Da ich da immer noch den Durchblick habe, dachte ich mir: Probieren geht über Studieren. Ich bekomme keine Kombination (mit ohne ^, mit ohne ") hin, die mir Set Anzahl ausführt und füllt.

Markus


01.
type getacl.log | find /i /c "s0210896" 
02.
 
03.
for /f "delims=" %%i in ('type getacl.log | ^find /i /c %1') do set Anzahl=%%i 
04.
 
05.
echo Anzahl ist %Anzahl% (%%i  %1)
wobei ich das Konstrukt ab find wie folgt abgeändert habe:
(51 ist das entsprechende Ergebnis)


Versuch 1:
C:\Tools\getacl>type getacl.log | find /i /c "s0210896"
51
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
C:\Tools\getacl>for /f "delims=" %i in ('type getacl.log | find /i /c "s0210896"
') do set Anzahl=%i


Versuch 2:
C:\Tools\getacl>type getacl.log | find /i /c "s0210896"
51
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
C:\Tools\getacl>for /f "delims=" %i in ('type getacl.log | ^find /i /c "s0210896
"') do set Anzahl=%i



Versuch 3:
C:\Tools\getacl>type getacl.log | find /i /c "s0210896"
51
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
C:\Tools\getacl>for /f "delims=" %i in ('type getacl.log | find /i /c s0210896')
do set Anzahl=%i
C:\Tools\getacl>m s0210896




Versuch 4:
C:\Tools\getacl>type getacl.log | find /i /c "s0210896"
51
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
C:\Tools\getacl>for /f "delims=" %i in ('type getacl.log | ^find /i /c s0210896'
) do set Anzahl=%i


Versuch 5:
C:\Tools\getacl>type getacl.log | find /i /c "s0210896"
51
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
C:\Tools\getacl>for /f "delims=" %i in ('type getacl.log | ^find /i /c s0210896'
) do set Anzahl=%i
Bitte warten ..
Mitglied: miniversum
09.09.2010 um 12:49 Uhr
Ach war mein Fehler. Ich habe das ungetestet geschrieben und dabei das | übersehen.
in einer For Schleife musst du das | mit dem ^ ausmaskieren, also so:
01.
for /f "delims=" %%i in ('type %logfile% ^| find /i /c "%1"') do set Anzahl=%%i
delims und tokens mußt du ggf. anpassen.
Bitte warten ..
Mitglied: BigWim
09.09.2010 um 13:13 Uhr
Super, Danke!

Jetzt funktioniert es.


in einer For Schleife musst du das | mit dem ^ ausmaskieren, also so:
Auch mein Fehler. Darf mich halt nicht (mehr) auf mein Gedächtnis verlassen. Ich hatte das ^ immer an der falschen Stelle eingefügt.


Markus
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...