43547
Goto Top

Ausgabe von Dateien (*.CON)

Ich habe folgendes Problem beim suchen nach Dateiendungen...

In dieser FOR Schleife lasse ich mit alle *.CON Dateien einbinden, mein problem ist aber das nicht nur *.CON Dateien enthalten sind sonder auch z.B. *.config... Hat jemand eine Idee wie ich das eingrenze das da nur *.CON Dateien aufgelistet werden.

________________________________________________________________________________
:SETLWS

SET LW_WINDIR=C:
SET LW_WINDIR=\AACABR\


:MAIN
FOR /f "delims== tokens=1" %%i in ('DIR *.CON /B /S') do @set /A j+=1 & @echo LW!j!=%%i>>%LW_WINDIR%%LW_AAC_SYS%LW_C.drv

:COPY
IF EXIST "%LW_WINDIR%%LW_AAC_SYS%LW_C.drv" (
FOR /f "delims== tokens=2" %%i in (%LW_WINDIR%%LW_AAC_SYS%LW_C.drv) do (

IF EXIST %%i\*.CON COPY %%i\*.CON A:\ >NUL

)
) else (
GOTO ENDE
)

:ENDE
EXIT

________________________________________________________________________________

Da ich nach CON Dateien suchen muss und die Aktuellste CON Datei auf Diskette bringen musss....

HILFE face-sad

Content-Key: 55376

Url: https://administrator.de/contentid/55376

Printed on: April 19, 2024 at 05:04 o'clock

Member: Biber
Biber Mar 29, 2007 at 12:02:34 (UTC)
Goto Top
Moin IT-KMS-Nitschke,

Ändere das ...('DIR *.CON /B /S') .. um in ..('DIR "*.CON " /B /S').. mit einem Leerzeichen nach der Extension ".CON".

Und dieses "HILFE face-sad" ist nicht nötig, wir lassen schon keinen hängen hier.

Gruss
Biber
Mitglied: 43547
43547 Mar 29, 2007 at 12:15:12 (UTC)
Goto Top
Danke erstmal für die schnelle Antwort Biber... face-smile

Nur wenn ich das im CMD test kommt das selbe wie vorher:

DIR "*.CON " /B /S

es werden immernoch Dateien wie web.config angezeigt...
Member: bastla
bastla Mar 29, 2007 at 12:18:56 (UTC)
Goto Top
Hallo IT-KMS-Nitschke!

Ersetz mal versuchsweise den ersten Teil bis inklusive "do" durch
for /f "delims=" %%i in ('DIR *.CON /B /S') do if /i [%%~xi]==[.con]  

Grüße
bastla
Mitglied: 43547
43547 Mar 29, 2007 at 12:30:06 (UTC)
Goto Top
Hallo bastla,

habe ich grad probiert... da kommt dann (Syntaxfehler)
Member: bastla
bastla Mar 29, 2007 at 12:42:22 (UTC)
Goto Top
Hallo IT-KMS-Nitschke!

Dann also komplett (wobei anzumerken wäre, dass mir ein "setlocal enabledelayedexpansion" vorneweg fehlt und auch die Zuweisung "SET LW_WINDIR=\AACABR" vermutlich anders gedacht war):

for /f "delims=" %%i in ('DIR *.CONF /B /S') do if /i [%%~xi]==[.con] @Set /A j+=1 & @Echo LW!j!=%%i>>%LW_WINDIR%%LW_AAC_SYS%LW_C.drv  

Grüße
bastla
Mitglied: 43547
43547 Mar 29, 2007 at 12:52:52 (UTC)
Goto Top
Soooo geschaft.... Danke bastla und auch Biber....

Also abbeschlossen face-smile

jetzt muss ich nur noch alle vorhandenen *.CON Dateien vergleichen und nur die Aktuellste auf Diskette kopieren lassen.... Habt Ihr da eine Idee??


:SETLWS
SetLocal EnableDelayedExpansion
SET LW_WINDIR=E:
SET LW_AAC_SYS=\AACABR\


:MAIN
C:
CD\

rem FOR /f "delims== tokens=1" %%i in ('DIR "*.CON " /B /S') do @set /A j+=1 & @echo LW!j!=%%i>>%LW_WINDIR%%LW_AAC_SYS%LW_C.drv
FOR /f "delims=" %%i in ('DIR *.CON /B /S') do if /i [%%~xi]==[.con] @set /A j+=1 & @echo LW!j!=%%i>>%LW_WINDIR%%LW_AAC_SYS%LW_C.drv

:COPY
IF EXIST "%LW_WINDIR%%LW_AAC_SYS%LW_C.drv" (
FOR /f "delims== tokens=2" %%i in (%LW_WINDIR%%LW_AAC_SYS%LW_C.drv) do (

COPY %%i A:\ >NUL

)
) else (
GOTO ENDE
)

:ENDE
rem EXIT
Member: bastla
bastla Mar 30, 2007 at 12:44:54 (UTC)
Goto Top
Hallo IT-KMS-Nitschke!

Je nachdem, welchen weiteren Zweck Du mit der erstellten Dateiliste noch verfolgen wolltest, müsstest du das Format / die Inhalte anpassen (siehe "echo"-Zeile in ":ProcessFile"). Derzeit ist der Inhalt nur am Zweck "Ausgabe der jüngsten Datei" orientiert.

Bei der Angabe des "SourceDir" bitte keinen abschließenden Backslash verwenden ("C:" steht also eigentlich für "C:\").

@echo off & setlocal
set SourceDir=C:
set Typ=.con
set LW_WINDIR=E:
set LW_AAC_SYS=\AACABR
set "Liste=%LW_WINDIR%%LW_AAC_SYS%LW_C.drv"  
for /f "delims=" %%i in ('dir "%SourceDir%\*%Typ%" /b /s') do if /i [%%~xi]==[%Typ%] call :ProcessFile "%%i"  
set Newest=
for /f "tokens=1* delims= " %%i in ('type "%Liste%" ^|sort') do set "Newest=%%j"  
if not defined Newest goto :KeineGefunden
echo %Newest% wird kopiert ...
copy "%Newest%" A:\ >nul  
goto :eof
:ProcessFile
set FDate=%~t1
set FileDate=%FDate:~6,4%%FDate:~3,2%%FDate:~0,2%%FDate:~11,2%%FDate:~14,2%
echo %FileDate% %~f1>>"%Liste%"  
goto :eof
:KeineGefunden
echo Es wurde keine passende Datei gefunden.

Grüße
bastla
Mitglied: 43547
43547 Mar 30, 2007 at 13:13:33 (UTC)
Goto Top
Echt klasse, danke danke danke....

MfG Nitschke
Member: bastla
bastla Mar 30, 2007 at 17:34:58 (UTC)
Goto Top
Hallo IT-KMS-Nitschke!

Da ich die obige Version so zwischendurch hingebastelt hatte, noch ein Nachtrag, speziell für den Fall, dass tatsächlich keine Datei gefunden wurde. Auch ergänzt: Beim Start wird zunächst einmal die alte Liste gelöscht.

@echo off & setlocal
set SourceDir=C:
set Typ=.con
set LW_WINDIR=E:
set LW_AAC_SYS=\AACABR
set "Liste=%LW_WINDIR%%LW_AAC_SYS%LW_C.drv"  
if exist "%Liste%" del "%Liste%"  
for /f "delims=" %%i in ('dir "%SourceDir%\*%Typ%" /b /s 2>nul') do if /i [%%~xi]==[%Typ%] call :ProcessFile "%%i"  
if not exist "%Liste%" goto :KeineGefunden  
set Newest=
for /f "tokens=1* delims= " %%i in ('type "%Liste%" ^|sort') do set "Newest=%%j"  
echo %Newest% wird kopiert ...
copy "%Newest%" A:\ >nul  
goto :eof
:ProcessFile
set FDate=%~t1
set FileDate=%FDate:~6,4%%FDate:~3,2%%FDate:~0,2%%FDate:~11,2%%FDate:~14,2%
echo %FileDate% %~f1>>"%Liste%"  
goto :eof
:KeineGefunden
echo Es wurde keine passende Datei gefunden.

Grüße
bastla