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, 3568 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Mehrzeiligen Powershell-Befehl mit Batch ausführen (3)

Frage von 133202 zum Thema Batch & Shell ...

Batch & Shell
gelöst EQU - GLEICH - BATCH (9)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Windows 10 Batch für Datum und Uhrzeit setzen (18)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (8)

Frage von ahaeuser zum Thema Windows Server ...