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

BATCH für Dateipfad mit Separator

Frage Entwicklung Batch & Shell

Mitglied: PeterS71

PeterS71 (Level 1) - Jetzt verbinden

12.01.2010, aktualisiert 14.01.2010, 3553 Aufrufe, 5 Kommentare

Hallo,

ich leider keine Erfahrung in der Batch - Programierung, benötige aber ein kleines Batch.

Ich benötige eine Batch - Datei mit der ich Dateipfade nicht unterereinander sodern hintereinander in eine Textdatei geschrieben werden.
Als Separator zwischen den Pfaden muss ein I stehen.

Mit einer einfachen Anweisung wie DIR /a /s >test.txt komme ich nich weiter.

Danke
Peter
Mitglied: TsukiSan
12.01.2010 um 13:22 Uhr
mit
01.
echo was auch immer >test.txt
hast du recht. da wird dir die ganze "test.txt"-datei ständig überschrieben.

um wieviele Dateipfade pro Zeile handelt es sich schließlich? Und muss es Batch sein?

Gruß
Tsuki
Bitte warten ..
Mitglied: PeterS71
12.01.2010 um 13:36 Uhr
Hallo,

danke für die schnelle Antwort.
Es werden sicher nicht mehr als 50 Dateipfade.
Ein Überschreiben der ausgangsdatei ist Okay.
Ich will die TXT datei in eine andere Batch einbinden,
ich benötige diese als Inpunt für eine weitere Software und diese wir über eine Batch gesteuert.
Es ist also günstig wenn die txt auch über eine Batch-Datei erzeut wird, so kann ich mehere ineinander "schachteln".

Gruß
Peter
Bitte warten ..
Mitglied: Biber
12.01.2010 um 14:06 Uhr
Moin PeterS71,

wenn ich dich richtig verstehe, dann holst du diese Ordnerliste mit dem DIR-Befehl nach der Mimik "alles unterhalb eines Startordners"?

eine mögliche Entsprechung im Batch wäre eine FOR /F-Anweisung auf genau dieses "DIR /s /a:d startverzeichnis";
eine Alternative eine wäre eine FOR /R /D-Anweisung.

Skizze (ungetestet)
01.
@echo off & setlocal 
02.
 
03.
FOR /R "x:\startdir" /D %%i in (*) do Call :AddThis "%%i;" 
04.
REM wenn das FOR-gelumpe fertig ist, dann sieht %thelongLine% so aus: 
05.
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;...... 
06.
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen 
07.
set "thelongline=%thelongline:;=^|%" 
08.
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig. 
09.
echo %thelongline%>neueTextdatei.txt 
10.
 
11.
:: Ende des Haupt-Batches 
12.
goto :eof 
13.
~~~~~~ 
14.
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen 
15.
Set theLongline=%theLongline%%~1 
16.
goto :eof
Grüße
Biber
Bitte warten ..
Mitglied: PeterS71
14.01.2010 um 08:29 Uhr
Moin Biber

dein Batch geht gut zum erzeugen einer Textdatei. Ich habe nun versucht die Variabele %thelongLine% in meinem Batch zu nutzen. Ich mach aber eine Fehler. Siehst du diesen.
Der Inhalt der Variablen "%Gemarkung% und %Flurstueck% (hier stehen die Dateipfade drin) soll -input zugewiesen werden.

01.
@ECHO OFF  
02.
 
03.
FOR /R "U:\_Daten\PSW\Lageplaene\Projekte\wb_bleiloch\ALK\alk_2009" /D %%i in (*) do Call :AddThis "%%i;" 
04.
REM wenn das FOR-gelumpe fertig ist, dann sieht %Gemarkung% so aus: 
05.
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;...... 
06.
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen 
07.
set "Gemarkung=%Gemarkung:;=^\ALK_1*.shp;%" 
08.
set "Gemarkung=%Gemarkung:;=^|%" 
09.
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig. 
10.
 
11.
 
12.
:: Ende des Haupt-batches 
13.
goto :eof 
14.
~~~~~~ 
15.
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen 
16.
Set Gemarkung=%Gemarkung%%~1 
17.
goto :eof 
18.
 
19.
 
20.
 
21.
FOR /R "U:\_Daten\PSW\Lageplaene\Projekte\wb_bleiloch\ALK\alk_2009" /D %%i in (*) do Call :AddThis "%%i;" 
22.
REM wenn das FOR-gelumpe fertig ist, dann sieht %Flurstuecke% so aus: 
23.
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;...... 
24.
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen 
25.
set "Flurstuecke=%Flurstuecke:;=^\ALK_2*.shp;%" 
26.
set "Flurstuecke=%Flurstuecke:;=^|%" 
27.
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig. 
28.
echo %thelongline%>verzeichnisse_alk.txt 
29.
 
30.
:: Ende des Haupt-batches 
31.
goto :eof 
32.
~~~~~~ 
33.
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen 
34.
Set Flurstuecke=%Flurstuecke%%~1 
35.
goto :eof 
36.
 
37.
 
38.
 
39.
REM Batch file training Bentley Geo Web Publisher 
40.
 
41.
ECHO -------------------------------------------------------------------------  
42.
ECHO Convert Whistler DGN files to IDPR files:12.07.2007 
43.
ECHO -------------------------------------------------------------------------  
44.
 
45.
 
46.
REM ------------------------------------------------------------------------- 
47.
REM Set up variables 
48.
REM -------------------------------------------------------------------------  
49.
SET GWPINSTALLPATH=C:\BentleyGWP\GeoWebPublisher\ 
50.
SET OUTPUTPATH=Z:\Stausee_Blei\Vektor\iDPR\Stausee_Blei 
51.
SET PROJECTPATHS=U:\_Daten\PSW\Lageplaene\Einstellungen\Workspace\Seed\MicroStation\Lageplan.dgn 
52.
REM -------------------------------------------------------------------------  
53.
 
54.
 
55.
 
56.
ECHO #-------------------------------------------------------------------------  
57.
ECHO # 1. Create Gemarkung.idpr 
58.
%GWPINSTALLPATH%iDPRcnv.exe -type=DGN -input="%Gemarkung%" -seed="%PROJECTPATHS%" -output="%OUTPUTPATH%-Gemarkung.idpr" -level=Lika_Gemark,Text_Lika_Gemark -trace >Gemarkung.txt -wu=untitled 
59.
ECHO # 3. Create Flurstuecke.idpr 
60.
%GWPINSTALLPATH%iDPRcnv.exe -type=DGN -input="%Flurstuecke%" -seed="%PROJECTPATHS%" -output="%OUTPUTPATH%-Flurstuecke.idpr" -level=Lika,Text_Lika,Lika_Grenzzeichen,Lika_Flur,Lika_Gemark -trace >Flurstuecke.txt -wu=untitled 
61.
 
62.
pause
Bitte warten ..
Mitglied: Biber
14.01.2010 um 10:35 Uhr
Moin PeterS71,

ich habe deinen Codeschnipsel mal in Codetags gesetzt, damit ich wenigstens die gemeinte Zeilennummer angeben kann.

Was ich mit bloßem Auge sehe ist:
  • Ergänze in Zeile 1 nach "@echo off" noch ein " & setlocal" [alle im Batch verwendeten Variablen werden NUR dort verwendet]
  • Zeile 28 benutzt die falsche Variable %theLongline%
  • es existiert 2x ein "Call-Block" AddThis... 1x ab Zeile 15 (der wird benutzt) ; 1x ab Zeile 33 (der wird nie benutzt)
  • alles, was nun tatsächlich zum Hauptablauf des Batches gehört (z.B. die zweite FOR-Anweisung "Flurstücke" sollte natürlich auch vor die jetzige Zeile 12 "Ende des Hauptbatches"

Bitte versuche es mit diesen Tipps (erstmal) allein, ein paar Klemmer rauszunehmen.
Den verbleibenden Rest machen wir dann gerne gemeinsam.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows Update

Windows Update-Suche nach Win7 Neuinstallation wieder schneller

(1)

Erfahrungsbericht von the-buccaneer zum Thema Windows Update ...

Ähnliche Inhalte
Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Batch & Shell
gelöst Systemvariable über Batch nicht abrufbar! (7)

Frage von Brotkasten zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch für File extension überprüfung und listenerstellungmit Zeit und Datum (2)

Frage von watch123 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch mit Copy auf SBS2008 funktioniert nicht, auf Client geht es (9)

Frage von CyCOtt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
Bestehende eMails autoamatisch weiterleiten (21)

Frage von metal-shot zum Thema Exchange Server ...

Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (21)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (18)

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

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (16)

Frage von ProfessorZ zum Thema Router & Routing ...