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

.bat-datei, die .bat-dateien erstellt, die wiederum Namen und Inhalte aus einer Excel-Tabelle bekommen sollen

Frage Entwicklung

Mitglied: Sinep1337

Sinep1337 (Level 1) - Jetzt verbinden

07.07.2011 um 09:57 Uhr, 3480 Aufrufe, 19 Kommentare

Hallo zusammen, ich hoffe, ihr könnt mir weiterhelfen.

Ich habe folgendes Problem:

ich benötige eine batch-datei, die mir weitere batch-dateien erstellt. das hab ich soweit:

@echo off

set i=Haltung_100001
:START
echo text > %i%.bat
set /A i=i+1
IF %i%==10 (exit)
goto :START



jetzt sollen die dann erstellten bat-dateien aber bestimmte datei-namen und inhalte bekommen. diese habe ich in einer excel-tabelle.

kann mir jmd evtl. weiterhelfen? ich wäre über jeden tipp sehr froh.
danke im voraus (;


Gruß, sinep1337
Mitglied: 60730
07.07.2011 um 10:09 Uhr
moin,

zum Thema Entwicklung einer Batch Datei und dem führenden Doppelbefehl @echo off mag ich eigentlich nix mehr schreiben.

Die Frage ist, warum stehen die in einer excel Tabelle und müssen die da drin sein.
  • einmalige Aktion oder immer wiederkehrend?

  • inhalte von xls kannst du nur mit VBS/VBA auslesen.

gruß
Bitte warten ..
Mitglied: bastla
07.07.2011 um 10:09 Uhr
Hallo Sinep1337 und willkommen im Forum!

Bist Du sicher, dass Du all diese Batchdateien brauchst, bzw etwas konkreter: Was ist der Sinn der ganzen Aktion?

Grüße
bastla

[Edit] @T-Mo
inhalte von xls kannst du nur mit VBS/VBA auslesen.
... oder als Textdatei speichern ...
[/Edit]
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 10:16 Uhr
@TimoBeil
und was ist wenn ich die excel-tabelle als txt-datei habe. kann ich dann die informationen als dateinamen daraus entnehmen?

@bastla
Ich brauche die wirklich. Ich arbeite mit einem Programm, was eine gewisse Information braucht. Diese information kann dem Programm aber nur mittels einer batch-Datei vermittelt werden. es sind ca. 2000 Ordner und ich brauche zu jedem eine Batch-Datei mit dem entsprechendem Namen. Und der Inhalt der bat-datei muss auch ein ganz bestimmter sein.


btw: danke, für eure schnelle antwort (:
Bitte warten ..
Mitglied: bastla
07.07.2011 um 10:22 Uhr
Hallo Sinep1337!

Dann beschreibe doch bitte zumindest den Aufbau der Excel-Datei - vor allem: befinden sich alle benötigten Informationen in einer Zeile, welche Sonderzeichen sind ev zu berücksichtigen?

Grüße
bastla
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 10:28 Uhr
Also ich habe es spaltenweise aufgebaut.

- in der ersten spalte stehen die unterschiedlichen Dateinamen, die die Batch-Dateien anschließend haben sollen.

- in der zweiten spalte steht ein Pfad, der in die batch-datei reinn sollte.

was vllt noch erwähnenswert ist: die dateinamen sehen wie folgt aus: Haltung_100005
es fängt bei Haltung_100001 an und endet bei Haltung_102049. Jedoch handelt es sich hierbei NICHT um 2049 Dateien, sonder um ca. 1900, da nicht jede Zahl vergeben ist.

Ich hoffe, das genügt dir als information zu der Excel-tabelle (:

Gruß
Bitte warten ..
Mitglied: bastla
07.07.2011 um 10:33 Uhr
Hallo Sinep1337!

Dann speichere die Tabelle als CSV und verwende etwa folgende Schleife zum Auslesen (nur als Demo für die Zerlegung):
01.
for /f "usebackq tokens=1* delims=;" %%i in ("D:\Die CSV-Datei.csv") do ( 
02.
    echo %%i_%%j 
03.
    REM hier sind auch 
04.
    REM mehrere Zeilen möglich 
05.
)
Grüße
bastla
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 10:48 Uhr
Irgendwie versteh ich das nicht so ganz :D

ich hab deine Zeile jetzt einfach mal in meine batch-datei eingefügt:

@echo off

set i=Haltung_100001
:START
echo text > %i%.bat
for /f "usebackq tokens=1-2 delims=;" %%i in ("C:\Dokumente und Einstellungen\hannauw\Desktop\muellmi\Neuer Ordner\liste_wichtig_neuesformat.csv") do (
echo %%i_%%j

set /A i=i+1
IF %i%==10 (exit)
goto :START



kannst du mir das evtl. genauer erklären?
aber td schonmal recht herzlichen Danke (:
Bitte warten ..
Mitglied: bastla
07.07.2011 um 10:59 Uhr
Hallo Sinep1337!

Deine Schleife ist ja nicht mehr nötig, wenn Du ohnehin alle zu erstellenden Dateien aus der CSV-Datei lesen kannst:
01.
for /f "usebackq tokens=1-2 delims=;" %%i in ("C:\Dokumente und Einstellungen\hannauw\Desktop\muellmi\Neuer Ordner\liste_wichtig_neuesformat.csv") do ( 
02.
    echo text 
03.
    echo Pfad: %%j 
04.
)>%%i.bat
Damit wird für jede Datei aus der Liste (vielleicht verwendest Du besser zum Testen eine auf 5 Zeilen gekürzte CSV-Datei) eine Datei mit den zwei Zeilen "text" und "Pfad: <Pfad lt Liste>" erstellt.

Grüße
bastla
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 11:18 Uhr
genau das steht jetzt in meiner .bat.
aber wenn ich diese öffne, passiert nichts.
was mach ich falsch? muss ich noch irgendetwas ergänzen?
woher weiß die bat-datei denn, aus welchen spalten sie den dateinamen und den dateiinhalt entnimmt?

Grüße (;
Bitte warten ..
Mitglied: bastla
07.07.2011 um 11:28 Uhr
Hallo Sinep1337!
woher weiß die bat-datei denn, aus welchen spalten sie den dateinamen und den dateiinhalt entnimmt?
Die Zerlegung jeder einzelnen Zeile der CSV-Datei erfolgt anhand des Trennzeichens ("delimiters") Semikolon - alles bis zum ersten Semikolon wird als Dateiname interpretiert, alles danach als Pfad ...

Um Dir einfach ansehen zu können, wie das funktioniert, verwende folgenden Batch:
01.
for /f "usebackq tokens=1-2 delims=;" %%i in ("C:\Dokumente und Einstellungen\hannauw\Desktop\muellmi\Neuer Ordner\liste_wichtig_neuesformat.csv") do ( 
02.
    echo Dateiname: %%i 
03.
    echo Pfad: %%j 
04.
    echo\ 
05.
06.
pause
Es müssten jetzt für jede Zeile der CSV Dateiname, Pfad und eine Leerzeile in der Konsole ausgegeben werden.

Grüße
bastla
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 11:42 Uhr
Danke, das sieht schonmal gut aus.
Also muss ich jetzt nur noch das "pause" wegmachen? oder muss da dann was anderes hin?

und wo werden die dateien dann ausgegeben bzw. erstellt?


Gruß (:
Bitte warten ..
Mitglied: Skyemugen
07.07.2011 um 11:57 Uhr
Aloha Sinepleet ... dafür, dass du 1337 bist, stellst du aber gar lustige Fragen

bastla schrieb doch:
Es müssten jetzt für jede Zeile der CSV Dateiname, Pfad und eine Leerzeile in der Konsole ausgegeben werden.

Mit dem letzten Code wird noch gar nichts erstellt, in seinem vorherigen Code schon eher aber das war wohl nicht wie gewollt von dir (?).

Wenn du direkt hinter der letzten Klammer noch ein >Dateiname.bat setzt, würde eine Datei erstellt werden, die Frage ist nun (oder bin ich blind): Wie sollen die Batchdateien benannt werden, die du somit erstellen lassen willst?
Erstellt werden die, sofern kein Pfad angegeben wird, in dem Verzeichnis, in dem die ausgeführte Batchdatei ihren Ursprung sucht.

greetz André

P.S.: Das Programm liest wirklich .bat-Dateien als Informationen ein?
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 12:02 Uhr
Ich habs jetzt hinbekommen.
Meine batch-datei erstellt nun batch-dateien, in denen der pfad drin steht.
jedoch möchte ich nun einen relativen pfad haben und keinen absoluten.
das muss nämlich hinterher auf einem anderen pc funktionieren, wo die datein natürlich woanders gelagert sind.

Danke (:
Bitte warten ..
Mitglied: bastla
07.07.2011 um 12:30 Uhr
Hallo Sinep1337!
jedoch möchte ich nun einen relativen pfad haben und keinen absoluten.
Dazu würde ich einfach in Excel per Suchen / Ersetzen den nicht gewünschten Pfadanteil eliminieren und dann nochmals in die CSV-Datei exportieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 13:06 Uhr
Also ich hab in excel den pfad verkürzt. aber wenn ich die batch-datei benutze um die anderen batch-dateien zu erstellen funktioniert alles. wenn ich dann jedoch die neuen batch-dateien öffnen will, um den zielordner zu öffnen, steht da, dass der pfad ungültig ist etc.

gibts da noch ne andere möglichkeit?
Bitte warten ..
Mitglied: 60730
07.07.2011 um 13:46 Uhr
Servus,

irgendwie rätsel ich jetzt aber etwas....

Also ich hab in excel den pfad verkürzt. aber wenn ich die batch-datei benutze um die anderen batch-dateien zu erstellen funktioniert alles
naja ein auslesen und schreiben ist ja auch banane, dafür zu Sorgen, dass auch das richtige drin steht doch die Pflicht.
wenn ich dann jedoch die neuen batch-dateien öffnen will, um den zielordner zu öffnen, steht da, dass der pfad ungültig ist etc.
um das irgendwie nachvollziehen zu können und um deine Zeile
das muss nämlich hinterher auf einem anderen pc funktionieren, wo die datein natürlich woanders gelagert sind.

irgendwie in einklang zu bringen mußt du die Hosen runter lassen und demos / Beipiele liefern.

btw: Wenn ich was baue, was allüberall laufen soll - versuche ich einen Standard Pfad zu nehmen, von daher ist dein "natürlich" woanders gelagert auch etwas komplexer zu verstehen.

Oder ich baue Variablen
01.
if exist c:\test\job set "heim=c:\test\job" 
02.
if exist d:\test\job set "heim=d:\test\job" 
03.
if exist y:\test\job set "heim=y:\test\job" 
04.
 
05.
echo das zeug liegt in %heim% 
06.
pause
Bitte warten ..
Mitglied: Sinep1337
07.07.2011 um 14:03 Uhr
Alsooo:

Ich fang mal an, das komplett zu erklären.
ich brauchte ja eine bat-datei, die mir mehrere bat-dateien erstellt mit den namen aus der excel-tabelle & als inhalt der pfad aus der excel-tabelle.
ich brauche die bat-dateien, damit ich die mit einem programm verknüpfen kann. wenn ich diese dort einpflege sollte sich der ordner zu der jewiligen batch datei öffnen. (es gibt zu jeder bat-datei einen ordner, der genauso heißt).
mein problem ist jetzt folgendes:
wenn ich an dem pc bleiben würde, dann wäre das ja alles kein problem. aber ich muss das auch von einem anderen pc öffnen können (mit dem jew. programm), der mit sicherheit einen anderen pfad für die ordner hat.
nun bräuchte ich das so, dass sich beim ausführen der bat-dateien, der ordner z.B. haltung_100203 öffnet. egal wo ich bin. der soll sich öffnen, sofern er irgendwo auf dem pc bzw. auf dem server ist.

hilft dir das evtl. weiter um mir weiterzuhelfen? ;D

Grüße (:
Bitte warten ..
Mitglied: 60730
07.07.2011 um 14:16 Uhr
Zitat von Sinep1337:
hilft dir das evtl. weiter um mir weiterzuhelfen? ;D

so halbwegs....

als Demo
01.
for /f "tokens=3 delims= " %a in ('dir haltung_100203 /AD ^|find "Verzeichnis von"') do echo %a
als einzeiler
01.
for /f "tokens=3 delims= " %%a in ('dir haltung_100203 /AD ^|find "Verzeichnis von"') do set "heim=%%a"
wäre jetzt ein ganz kriminellummer Weg den Pfad rauszufinden, wo denn haltung_100203 wäre - vorausgesetzt, wir müsten nicht alle existierenden Laufwerke abkaspern.

Nochmal - den Inhalt und das, was gesucht werden soll - vorher /nachher macht doch mehr Sinn für uns - du weißt, was du willst und wir nicht.
Grüße (:
Bitte warten ..
Mitglied: bastla
07.07.2011 um 14:16 Uhr
Hallo Sinep1337!

Vielleicht hilft es Dir ja, dass Du den Pfad der Batch-Datei mit
set "Heim=%~dp0"
in eine Variable schreiben bzw mit
01.
cd /d "%~dp0"
deren Ordner zum aktuellen Ordner machen kannst ...

[Edit] @T-Mo
Dann würde ich aber eher ein dir /s /b /ad \Haltung_100203 verwenden ...
[/Edit]

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...