Neu Einfache Batch-Datei funktioniert nicht

Xnightman

Neues Mitglied
12. Dezember 2022
8
1
Ich bin aktuell am verzweifeln, da ich keine Lösung finde wie ich die meine CSV-Dateien wie im Video () importieren kann.

Meine CSV-Datei befindet sich unter: "C:\Users\useradmin\Documents\Lieferantenbestaende\A_Combisteel"

Ich möchte lediglich, dass die neueste Datei aus dem Ordner "A_Lieferant" importiert wird.

Mein Code lautet wie folgt:

@echo off

set "csvfolder=C:\Users\useradmin\Documents\Lieferantenbestaende\A_Lieferant"

for /f "delims=" %%a in ('dir /b /a-d /o-d "%csvfolder%*.csv"') do set "latestcsv=%%a"

"C:\Program Files (x86)\JTL-Software\ JTL-wawi- ameise.exe" -s **** -d eazybusiness -u sa -p **** -t IMP1 -i "%csvfolder%%latestcsv%"

close

Als Rückmeldung erhalte ich lediglich: Datei nicht gefunden.


Was mache ich falsch???

Ich benutze Notepad++ als Editor und JTL läuft über einen remoteserver von Ecomdata.

Vielen Dank schonmal im voraus!
 
Zuletzt bearbeitet:

absolutbad

Aktives Mitglied
4. Oktober 2013
42
18
Ich kenne mich nicht so gut aus mit Batch, aber musss es nicht so heißen:
Code:
set csvfolder="C:\Users\useradmin\Documents\Lieferantenbestaende\A_Lieferant"
 

Xnightman

Neues Mitglied
12. Dezember 2022
8
1
Danke, aber das funktioniert leider auch nicht.
Das Fenster zeigt mir an: "Importdatei existiert nicht: [Pfad zum Ordner]

Sollte hier nicht der Pfad zur Datei stehen?
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
596
150
Du machst es dir unnötig schwer.
Dadurch, dass du zu Beginn Echo off sagst, schaltest du ja alle Meldungen aus und bist jetzt praktisch im Blindflug unterwegs und siehst nicht genau, was dein Code eigentlich macht.

Schreibe doch zum Testen vor den Ameisenbefel mal REM. Dann ist die Zeile ein Kommentar und wird nicht als Befehl ausgeführt.
Jetzt kannst du testen ohne was kaputtzumachen.

Und jetzt schreibe doch testweise statt dem do set .... einfach mal echo %%a dann gibt er dir den Inhalt von der Variable aus und du siehst, ob es überhaupt das ist was du willst.

Aber irgendwas ist in deinem Programm auch unlogisch.
Du suchst nach einer Datei mit dem Namen C:\Users\useradmin\Documents\Lieferantenbestaende\A_Lieferant.csv und speicherst diesen Namen dann in der Variable latestcsv.
Das kann ja nicht das sein, was du machen willst, denn dafür brauchst du doch das ganze for Zeugs nicht... ich weiß aber natürlich auch nicht, was du vorhast.

So würde ich es mal zum Testen umschreiben:

@echo off
set "csvfolder=C:\Users\useradmin\Documents\Lieferantenbestaende\A_Lieferant"
for /f "delims=" %%a in ('dir /b /a-d /o-d "%csvfolder%*.csv"') do echo %%a
REM "C:\Program Files (x86)\JTL-Software\ JTL-wawi- ameise.exe" -s **** -d eazybusiness -u sa -p **** -t IMP1 -i "%csvfolder%%latestcsv%"
REM close
 
  • Gefällt mir
Reaktionen: Christoph E.

JohnFrea

Sehr aktives Mitglied
21. September 2017
551
167
Hiermit wird doch ein Paf aus einem Ordner und einem Dateinamen zusammen gebaut. "%csvfolder%%latestcsv%"
Aber fehlt da nicht ein Backslash dazwischen? Versuch mal

set "csvfolder=C:\Users\useradmin\Documents\Lieferantenbestaende\A_Lieferant\"
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
596
150
Anstelle der Smileys natürlich die entsprechenden Zeichen :)
Wenn du die Argumente richtig verwendest, wird auch kein Smiley angezeigt.
Lass dir mal die Doku zu dem dir Befehl mit dir /? anzeigen, dann siehst du, dass du keine Doppelpunkte dort reinbasteln solltest. So: DIR /A-D /O-D

Hast du dir denn zu deinen Befehlen jeweils die Dokus angeschaut? Also echo /? dir /? for/? u.s.w.
Wahrscheinlich nicht, oder?
Das ist eigentlich fahrlässig, denn du hast dir jetzt einfach einen Code zusammengebastelt, der irgendwas macht und das Ergebnis dann ohne weiteres Eingreifen von dir einfach der Ameise übergibt und importiert.

Welche Datei ist denn für dich z.b. die "Neueste"?
Es gibt doch das Erstellungsdatum, ein Änderungs- und ein Zugriffsdatum. Was suchst dir dein Code raus?
Wenn z.b. jemand in dem Ordner die Datei vom letzten Monat öffnet, um was nachzukucken, hat diese das neueste Zugriffsdatum. Willst du die dann importieren lassen??? Wahrscheinlich nicht oder....

Du solltest unbedingt sicherstellen, dass dein Code auch das macht, was du eigentlich vor hast , weil diese Datei wird dann ja widerspruchslos importiert.

Das mit dem Datum ist aber nur ein Beispiel für mögliche Fehlerquellen, die du durchdenken musst.
Was passiert z.b. wenn nichts gefunden wird? wie wirst du benachrichtigt, wenn das Skript ins leere läuft... u.s.w

Und wieso machst du überall soviele Anführungszeichen hin?
Ich denke, du hast dir einfach ein paar Zeilen kopiert ohne richtig zu verstehen, was da gemacht wird. Das solltest du aber genau verstehen, denn du übernimmst die Dateien dann ja gutgläubig in deine Wawi.

Vielleicht mal als Ansatz für deine eigenen Überlegungen (bitte nicht einfach kopieren)
Code:
@echo off
set folder=C:\Users\useradmin\Documents\Lieferantenbestaende\A_Lieferant
set ext=*.csv

if exist %folder% (
  for /f %%i in ('dir %folder%\%ext% /a-d /b /o-d /tw') do (
    set "NewestFile=%%i"
    goto FoundFile
  )
)
echo Keine Datei gefunden!
rem evtl. Email mit Fehlermeldung
goto :EOF

:FoundFile
echo Die neueste Datei ist: "%NewestFile%"
REM evtl. ab hier in die ameise
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Xnightman

Xnightman

Neues Mitglied
12. Dezember 2022
8
1
Danke für die Tipps und Hinweise.
Macht natürlich Sinn, wenn man auch weiß was die einzelnen Befehle zu bedeuten haben.

Anstelle der Email-Benachrichtigung habe ich ein Fehlerprotokoll eingebaut.

Danke nochmal vielmals für deine Hilfe.
 

Ähnliche Themen