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

SET funktioniert in FOR Schleife nicht

Frage Entwicklung Batch & Shell

Mitglied: quba

quba (Level 1) - Jetzt verbinden

26.08.2010 um 15:31 Uhr, 3004 Aufrufe, 6 Kommentare

Hallo zusammen,

ich ich glaube ich stehe auf dem Schlauch
Folgendes:
Ich versuche aus einem Ordner die Datei die dort steht mit einer FOR /F auszulesen und in eine
Variable zu schreiben um diese (Dateiname) danach weiter zu verwenden:

for /f "delims=" %%i in ('dir /b %workpath%') DO @SET pdf=%%i

Mit echo %pdf% kann ich mir anschauen, dass der Dateiname der Variable korrekt zugewiesen wurde.

Führe ich die Batch aus funktioniert alles.

Rufe ich die Batch über die Geplanten Tasks auf funktioniert es nicht.
Der Variable wird kein Wert zugewiesen.

Hat jemand eine Idee?

Danke und Gruß
quba
Mitglied: Biber
26.08.2010 um 15:36 Uhr
Moin Quba,

gib doch mal in der Zeile VOR dem FOR-Geraffel einfach ein:
@echo Batch-durchnudelnder Benutzer: [%username%] und dessen Variable Workdir [%workdir%]
Ab dem Punkt dann stehe ich für verbleibende Fragen zur Verfügung.

Grüße
Biber
Bitte warten ..
Mitglied: quba
26.08.2010 um 15:49 Uhr
Tach auch,

da es in einer neuen Datei, in der nur diese eine Zeile steht funktioniert,
habe ich ein wenig getestet.

Was ich nicht erwähnt habe: Die FOR Schleife ist in einer IF EXIST Schleife
Eigentlich dachte ich dies macht nichts aus, aber wenn ich die FOR außerhalb der IF
laufen lasse, dann tut alles. Innerhalb der IF tut es nicht.
Zumindest nicht über geplante Tasks, wenn ich von Hand aufrufe, dann gehts auch.

Ich versteh das nicht.....

grüße
quba
Bitte warten ..
Mitglied: 60730
26.08.2010 um 16:05 Uhr
Moin,

naja wenn das was nicht exististiert auch nicht existiert, dann findet der if exist auch keinen Grund dich ins innere zu lotsen.

Ich versteh das nicht.....
Ich auch nicht - du willst doch Hilfe, warum dann so schüchtern mit deiner Batch?

Gruß
Bitte warten ..
Mitglied: quba
26.08.2010 um 16:19 Uhr
Doch in die IF Exist springt er rein.

Hier mal ein Auszug mit dem ich Probleme hab


if exist "%workpath%\*.pdf" (
for /f "delims=" %%i in ('dir /b %workpath%') DO @SET pdf=%%i
@echo %pdf% > c:\log.txt
)

Wie erwähnt %pdf% hat keinen Wert zugewiesen.
In der log.txt müsste dann der Dateiname stehen, aber ich sehe nur "ECHO ON" da
ja die Variable wohl leer ist...

LG
Bitte warten ..
Mitglied: Biber
26.08.2010 um 16:47 Uhr
Moin quba,

gestern in einer Frage von jonny83 hatten wir Ähnliches.

Kurzfassung:
  • Vom Wort "IF" bis zum letzten "RundeKlammerZu" ist es EINE Befehlszeile
  • In EINER Befehlszeile werden alle %Variablen% EINMAL aufgelöst ...vor Beginn des erstens Zeichens der Befehlszeile.
  • Abhilfe siehe im Beitrag von jonny83

--> oder aber in Deinem Fall:
Verlege das @echo %pdf% etwas tiefer auf die Zeile NACH der "RundeKlammerZu"-Zeile.

Grüße
Biber
Bitte warten ..
Mitglied: quba
26.08.2010 um 17:04 Uhr
Hey Biber,

man lernt nie aus...
Danke dir der Beitrag bzw. dein Kommentar bei jonny83 hat mir wirklich sehr weiter geholfen.
Des Rätsels Lösung Setlocal EnableDelayedExpansion und die Variable mit !pdf!

Einfach genial!

Danke und einen schönen Tag

quba
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Set-ADUser - Füllen des Felds "Location" funktioniert nicht (2)

Frage von Alex94G zum Thema Batch & Shell ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Router & Routing
TPLink Router Standard admin Passwort funktioniert nicht (12)

Frage von Emmy2437 zum Thema Router & Routing ...

Exchange Server
gelöst SBS 2003 Exchange deaktiviert - E-Mail-Versand untereinander funktioniert nicht (3)

Frage von Wirdnoch zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (27)

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

Windows 10
Welches OS für Firmengeräte? (18)

Frage von MarkusVH zum Thema Windows 10 ...

Netzwerke
Abisolierwerkzeug (18)

Frage von SarekHL zum Thema Netzwerke ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (17)

Frage von bogi1102 zum Thema Exchange Server ...