marcelgausg
Goto Top

Neue Datei mit gleichem Namen nur andere Endung und leer...

hallo ihr da draussen,

ich brauch ma wieder eure Hilfe ;)

ich habe eine Datei ( z.b. XXX_to_XXXXXX.ORDRSP.0770.txt). Nun bräuchte ich ein Batchfile das mir eine Neue Datei erstellt, die den gleichen Namen hat, nur die Endung anstatt *.txt ---- *.done und der Inhalt muss leer sein.

Hoffe das war etz irgendwie klar face-smile Also der Dateiname ändert sich natürlich immer wieder.

Schon mal "Danke"

Gruß

Content-ID: 70386

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

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

zacharias
zacharias 08.10.2007 um 16:26:30 Uhr
Goto Top
DIR *.TXT /B > MyList
FOR /F "DELIMS=" %%i IN (MyList) DO ECHO.>%%i.DONE
DEL MyList

Mit freundlichem Gruß
zacharias
Biber
Biber 08.10.2007 um 16:47:55 Uhr
Goto Top
Moin MarcelGausG,

etwas geradliniger:
for %i in (*.txt) do @echo.>"%~ni.done"  
[...wenn es alle *.txt (be-)treffen soll.]

Grüße
Biber
MarcelGausG
MarcelGausG 09.10.2007 um 08:31:02 Uhr
Goto Top
hallo ...

schon mal vielen Dank .... aber leider geht des net bei mir .... beides net ... bin in Sachen Batch leider ein Vollnoob ... *sorry dafür* vielleicht hab ich mich auch schecht ausgedrückt ....

ich versuchs nochmal face-smile

ich hab also eine Datei namens "bla_to_blabla.ORDRSP.0836.txt" .... Nun brauch ich eine Datei... mit dem gleichen Namen also "bla_to_blabla.ORDRSP.0836" und mit der Endung "*.done" sollte danach quasi so aussehen ... "bla_to_blabla.ORDRSP.0836.done" und die Datei darf keinen Inhalt haben....

Hoffe jetzt ist es besser erklärt face-smile Wäre nett wenn ihr mir helfen könntet ...

Gruß
Biber
Biber 09.10.2007 um 08:50:46 Uhr
Goto Top
Moin MarcelGausG,

was genau "###" bei Dir denn nicht?

Meine CMD-Prompt-Simulation zeigt keine Auffälligkeiten:
>echo sdsds>la_to_blabla.ORDRSP.0836.txt

>for %i in (la_to*.txt) do @echo @echo.^>"%~ni.done"  
@echo.>"la_to_blabla.ORDRSP.0836.done"  

Soweit ich es zu erkennen vermag, würde genau der gewünschte Effekt herauskommen.

Was habe ich übersehen?

Gruß
Biber
[Edit] Fehler gefunden. Die obige Variante würde eine Datei *.done mit 2 Byte Länge (ein CRLF) erzeugen.

Besser (nicht eleganter) wäre:
for %i in (la_to*.txt) do findstr "Biber war hier" "%i">"%~ni.done  
MarcelGausG
MarcelGausG 09.10.2007 um 09:15:53 Uhr
Goto Top
Hallo Biber...

also wenn ich das hier eintippe :


echo sdsds>IVS_to_Amazon.ORDRSP.0836.txt

for %i in (IVS_to*.txt) do @echo @echo.^>"%~ni.done"

@echo.>"IVS_to_Amazon.ORDRSP.0836.done"

macht er bei mir gar nichts ... ist das "sdsds" richtig ?? oder muss ich da was anderes dafür eintippeln ?

gruß
Biber
Biber 09.10.2007 um 09:25:20 Uhr
Goto Top
Moin MarcelGausG,

nein, das Ergebnis der Simulation war schon richtig. Genau das sollte auch herauskommen.
Ich hatte inzwischen aber noch einen Nachtrag, ein "Edit" oben gemacht.
Probier dieses mal bitte aus.

Gruß
Biber
MarcelGausG
MarcelGausG 09.10.2007 um 09:28:35 Uhr
Goto Top
sorry ... er macht bei mir gar nichts ( also er erzeugt keine neue datei ) .... keine ahnung was ich falsch mache ... *gruml*

das hier sagt er mir:

D:\>make_it_done.bat

D:\>echo sdsds 1>IVS_to_Amazon.ORDRSP.0836.txt
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~ni.done

Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig sind.
Syntaxfehler.
D:\>for i">"n (la_to*.txt) to findstr "Biber war hier" "%i">%ni.done
D:\>


gruß
Biber
Biber 09.10.2007 um 11:33:49 Uhr
Goto Top
Moin MarcelGausG,

meine Zeile war zum Abfeuern vom CMD-Prompt aus gedacht.
In einem Batch müssen alle dynamischen Variablen (i.e. %i) mit zwei Prozentzeichen statt einem geschrieben werden.

::---- snipp MakeMeDune.bat
@for %%i in (la_to*.txt) do findstr "Biber war hier" "%%i">"%%~ni.done  
::---- snapp MakeMeDune.bat

Grüße
Biber
MarcelGausG
MarcelGausG 09.10.2007 um 14:48:30 Uhr
Goto Top
DU BIST DER BESTE !!!! face-smile DANKE

woher soll ich denn sowas wissen ??? Hab doch geschrieben das ich ein Vollnoob bin !!! :D


Vielen Dank nochmal ...

Gruß

Marcel
Biber
Biber 09.10.2007 um 20:09:20 Uhr
Goto Top
Moin MarcelGausG,

>...Hab doch geschrieben das ich ein Vollnoob bin

Na ja, das ist immer eine zwiespältige Aussage hier und in anderen Foren.
Viele FragestellerInnen outen sich sehr schnell bei der Beitragseröffnung als "Noob", "hab leider gar kein Plan", "keine Ahnung wie..", schreiben aber im nächsten Satz, dass sie ganz schnell, weil furchtbar wichtig, eine Lösung haben MÜSSEN, die in einer Endlosschleife eine Webseite aufruft, die Quersumme aller darauf befindlichen Hotline-Telefonnummern berechnet und mit diesem Wert n das CD-Laufwerk n-mal auf- und wieder zuschiebt, während im Hintergrund Gustav Mahlers Sinfonie Nr. 10 erklingen soll (aber nur aus dem rechten Lautsprecher)....

Kurz gesagt, viele der so selbstbezeichneten Noobs wollen hier eine (handwerklich) professionelle Lösung für ein abgedrehtes und an den Haaren herbeigezogenes Szenario - und sind eben nicht daran interessiert, wie oder warum etwas funktioniert, sondern nur dass es funktioniert.

Um dann beim nächsten Jägermeister-mit-Redbull-Abend den Kumpels zu zeigen "Kuck ma' was mein PC kann".

Das ist einer der Gründe dafür, dass selbst so geduldige Wissensteiler wie ich manchmal die Erklärung und die Herleitung der Lösung nur auf explizite Nachfrage abliefern und im ersten Wurf nur eine Quick-and-Dirty-Ergebnisskizze auf den Forumsboden werfen.
Für einen großen Prozentsatz der Eintags-User reicht das (leider) offensichtlich.

Nichtsdestotrotz - wenn Fragen offen sind oder etwas erklärt werden soll: BITTE FRAGEN !

Dieses Forum hier ist durchaus dafür offen, dass auch "Noobs" kommen.
Nur sollten diese auch den Willen und die Einstellung mitbringen "Ich werde dieses Forum nicht als Noob verlassen".

Grüße
Biber
ToffiFee
ToffiFee 16.10.2007 um 14:48:29 Uhr
Goto Top
Hey, wir haben hier so ziemlich das selbe Problem, allerdings brauchen wir für jede *.exe datei eine datei mit entsprechendem namen und der endung *.exe.local.

wir sind jetzt streng nach der anleitung vorgegangen, allerdings sind in manchen unserer Dateien immernoch Inhalte. Vielleicht könnte mir Marcel mal die endgültige lösung die funktionier hat posten? Das müsste sich doch mit .exe dateien genauso verhalten wie mit allen anderen auch oder? Wenn jemand einwände hat, bitte melden =)

Gruß,
Bene
Biber
Biber 16.10.2007 um 16:09:22 Uhr
Goto Top
Moin ToffiFee,

eigentlich sollte in der Tat auch bei *.exe-Dateien die Mimik die Gleiche sein.
Andererseits kann bei Exe-Dateien natürlich wirklich der Fall eintreten:
  • "Biber was here" steht in der Datei face-wink
  • oder: Findstr schreibt einen Text "Datei xxx konnte nicht geöffnet werden", wenn die *.exe-Datei durchsucht wird.

Bitte ändere es wie in folgendem CMD-Prompt-Beispiel:
>for %i in (%windir%\w*.exe) do @echo "%i"|find "Biber was here" >%~nxi.local  

C:\Dokumente und Einstellungen\Biber
>dir *.local
 Datenträger in Laufwerk C: ist System XP
 Volumeseriennummer: 0815-4711

 Verzeichnis von C:\Dokumente und Einstellungen\Biber

16.10.2007  15:37                 0 winhelp.exe.local
16.10.2007  15:37                 0 winhlp32.exe.local
               2 Datei(en)              0 Bytes

In diesem Beispiel leite ich aus allen w*.exe-Namen im %windir%-Verzeichnis entsprechende 0-Byte-Kopien mit der Zusatzendung ".local" ab.

Gruß
Biber
zacharias
zacharias 16.10.2007 um 16:18:19 Uhr
Goto Top
@Biber

Man könnte doch auch wie folgt eine 0Byte-File erzeugen:

del *.local
for %i in (%windir%\w*.exe) do fsutil file createnew "%i.local" 0  

Anscheinend muss man aber die Files vorher löschen, da er sonst die
Datei nicht erstellen kann und überschreiben tut er sie nicht.

Aber ob ich jetzt "DEL *.LOCAL" sage oder in jede *.LOCAL-Datei was
reinshifte (@echo "%i"|find "Biber was here" >%~nxi.local) ist eh egal.

Mit freundlichem Gruß
zacharias
Biber
Biber 16.10.2007 um 16:34:34 Uhr
Goto Top
Jepp, zacharias,

irgendwie seriöser sieht Dein Code schon aus... ist manchen Kunden schwer vermittelbar, warum der Text "Biber was here" in einer Produktiv-Umgebung eingebaut ist face-wink

Aber dann hätte ich noch eine Variation Deiner Lösung:

for %i in (%windir%\w*.exe) do (
  If exist "%i.local" del "%i.local"  
  fsutil file createnew "%i.local" 0   
)

...damit auch nur diejenigen *.local gelöscht werden, die auch neu angelegt werden.

Grüße
Biber
ToffiFee
ToffiFee 17.10.2007 um 08:02:08 Uhr
Goto Top
ah,herrlichst =)
funktioniert jetzt so weit, hab noch das w*.exe in ".exe" geaendert, da, sagt mir wenn ich mich taeusche, sonst ja nur alle .exe dateien gesucht werden die mit w beginnen. und das %windir% hab ich entfernt, da die aktion ja im aktuellen verzeichnis ausgeführt werden soll... haben uns gestern kurz vor feierabend mit der aktion noch nen rechner geschossen indem wir den modifizierten code fuer die textdateien von marcel auf das c:/windows verzeichnis gejagt haben, ich hoffe das passiert jetzt nicht nochmal =)

bis dahin allerbesten Dank an alle unterstützer.
Gruß,
Bene