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, 2989 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
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

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

Frage von Alex94G zum Thema Batch & Shell ...

Router & Routing
Transparenter Proxy funktioniert nicht? (1)

Frage von mrserious73 zum Thema Router & Routing ...

Linux
LTSP: PXE Boot funktioniert nicht (23)

Frage von Fenris14 zum Thema Linux ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...