Jump to content

Biber

Members
  • Gesamte Inhalte

    97
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von Biber

  1. Moin crazymetzel, in der Hoffnung, dass Du einen CMD-Prompt und nicht nur einen DOS-Prompt hast... ..und unter der Annahme, dass Du die beiden *.ini's im Ordner "\Archives\c" abgelegt hast und das auch das Wurzelverzeichnis ist Am CMD-Prompt: for /r "\archives\c" %i in (.) do @echo copy /y \archives\c\a*.ini "%~fi\" [/Code] Wenn diese Demo das vermeintlich Richtige anzeigt, dann diese Zeile ohne das "@echo" abfeuern. Grüße Biber
  2. Moin SilverDragOn, die neueren Versionen der DelAge32.kennen neben dem "/includeRO" auch einen "/includeH"-Schalter für/gegen versteckte Dateien. Wobei.... "neuere Version" heißt so ca seit Ende 2005.. *g Sollte in Deiner Version als auch da sein. Off-Topic:@blub .... Und was das ForFiles-Utility betrifft.... ...keine Ahnung, wie das in Redmond an der Qualitätskontrolle vorbeigeschmuggelt wurde. Oder wozu. Wenn nicht mal Microsoft selbst dieses #!!#@#-Teil als Feature anpreist, solltest Du es auch nicht an ahnungslose Newbies wie SiverDragOn oder mich empfehlen. Grüße Biber
  3. Moin Narugami, wenn Du den Weg über diese Textdatei user_shares.txt gehst, brauchst Du die DelayedExpansion nicht - jedenfalls nicht für eine ERRORLEVEL-Auswertung. Kürzer ginge es so: @echo off for /F "Delims=" %%i IN (user_shares.txt) DO ( %%i >>successful.log if errorlevel 1 echo Fehler bei: %%i >>error.log ) [/Code] -oder- [Code] @echo off for /F "Delims=" %%i IN (user_shares.txt) DO ( %%i >>successful.log ||echo Fehler bei: %%i >>error.log ) [/Code] ...soll sogar Exoten geben, die so etwas direkt als Oneliner vom CMD-Prompt abfeuern.. [Code] @for /F "Delims=" %i IN (user_shares.txt) DO %i >>successful.log||echo Fehler bei: %i >>error.log [/Code] Grüße Biber
  4. @spaceguy: Bitte immer Quellen angeben [hier: für die Batchvariante]: Getosversion.vbs - Betriebssystem sowie die Versionsnummer per Script bestimmen - administrator Danke Biber
  5. Moin saracs, ich würde es mit zwei Zeilen vom CMD-Prompt aus abfackeln. for /f "delims=_ tokens=1-3 " %i in ('dir /a-D /b d:\einDBADir\DBA_3_*') do @if not exist "d:\einDBADir\%i_%j_%k" md "d:\einDBADir\%j_%j%k" for /f "delims=_ tokens=1-3 " %i in ('dir /aD /b d:\einDBADir\DBA_3_*') do move "d:\einDBADir\%i_%j_%k*.tif" "d:\einDBADir\%j_%j%k\" [/Code] [ungetestete Skizze] Grüße Biber
  6. Moin Tee-Cräcker, der erste Teil, das Umbenennen geht einfach per FOR-Anweiung vom CMD-Prompt. for %x in (D:\einBildVerzeichnis\Bild*.bla) do @for /f "tokens=1,3 Delims=_." %i in ("%x") do @echo rename "%x" "%i.%j" [/Code] [ungetestet - wenn das gewünschte Ergebnis angezeigt wird, das "@echo" weglassen.] Der zweite Teil, das Ändern der erweiterten Dateieigenschaften ist nur über VBS o.ä. machbar. Aber wozu?? Grüße Biber
  7. Moin Murf, erstmal danke für das Bereitstellen Deiner selbst gefundenen Lösung. Um dieses i-Tüpfelchen auch noch draufzusetzen: Könntest Du mal das SetACL-Kommando mit posten und/oder einen (sinngemäßen) Auszug der Textdatei? Dann ist es einfacher... Grüße Biber
  8. @GuentherH Vollkommen richtig, eine Diskussion über drei Ecken bzw. in diesem Forum ist überflüssig und es war auch nicht meine Intention, hier so etwas loszutreten. Sorry für die Eskalation. @eismanhobbit Per PN brauchst Du mir den Kommentar oben mir nicht nochmals schicken, ich habe es gelesen. ;-) Lass uns den Rest über PN klären - auch wenn es sicherlich einen gewissen Unterhaltungswerrt für die MitleserInnen haben würde, gehört es nicht hier hinein. Grüße Biber P.S. @GuentherH Es kann natürlich auch der ganze OffTopic-Teil dieses Threads angefangen mit meinem ersten Kommentar entsorgt werden. Denke, dass es auch eismanhobbit Recht wäre.
  9. Off-Topic: Das Crossposting [Script richtig beenden (Popup schliessen) - administrator ] habe ich mit Verweis auf Cybquests mehr als hinreichende Lösung geschlossen. @Ötzi Beim vierten Cross-/Doppelposting werde ich ausführlicher. Grüße Biber
  10. Nachtrag: wie geschrieben, müssen ALLE einfachen %-Zeichen zu %% geändert werden. Also wird auch das ....("%~ni")... zu ....("%%~ni"). Hast Du bestimmt sofort gemerkt, ich leider gerade eben erst. Sorry. Grüße Biber
  11. Moin torstenv, das XEcho hatte ich hier schon herumliegen, und Gottseidank zeigt dieses Tool beim Aufruf mit XEcho /? auch, wo es herkommt. ich hatte es allerdings auch nur irgendwann mal zum Test heruntergeladen, aber nicht wirklich benutzt. Deshalb auch meine WTF-Frage. Von ähnlichen Tools habe ich nur noch den Namen echoN.(com?.exe?) im Ohr, habe aber weder Ansichtsexemplar noch Quelle. Aber auch nicht gesucht. Back to thread... Alternative mit Bordmitteln... hmmmmja, dann bestenfalls das Erzeugen eines temporären VBS-Oneliners, der das eben macht. @echo off & setlocal Set "tmpvb=%temp%\writeAChar.vbs" echo WScript.StdOut.write^( WScript.Arguments^(0^)^)>%tmpvb% cscript //nologo "%tmpvb%" z>MeineNeue1ZeichenDatei.txt del %tmpvb" [/Code] Dieser ungetestete Schnipsel würde via temporärem VBS-Oneliner ein einzelnes Zeichen (oder auch mehrere) einlesen und rausschreiben - aber eben ohne CRLF. ich habe wieder das Beispiel mit dem Zeichen "z" genommen. Die Caret-Mimik zum Maskieren hatten wir ja schon im Parallelthread - ist hier nicht zwingend nötig, aber schadet auch nicht. Hier ginge auch "echo WScript.StdOut.write( WScript.Arguments(0)) >%tmpvb%". Ohne maskierung der "runden Klammern". Solltest Du noch einen undokumentierten echo-Schalter finden, der uns so etwas hier erspart, dann teile es bitte allen mit. Grüße Biber
  12. Tja torstenv, dann wirst Du wohl auf eines der Freewaretools zurückgreifen müssen, die für diesen Zweck konzipiert worden sind (echon.exe, xEcho.exe,...). mit dem XEcho [http://www.arminhanisch.de/software/xecho.html] geht das z.b. so. >xecho z /nolf>z.txt (=18:48:37 D:\temp=) >dir z.txt .. Verzeichnis von D:\temp 29.02.2008 18:48 1 z.txt [/Code] Oder Du machst es mit einem temporär erstellten VBSkript aus dem Batch heraus. Aber - die Frage sei mir gestattet -WTF treibst Du da? Grüße Biber
  13. Moin torstenv, die einzige Möglichkeit, die mir einfällt wäre: >copy /y con z.txt z^Z 1 Datei(en) kopiert. (=16:34:41 D:\temp=) >dir z.txt Verzeichnis von D:\temp 29.02.2008 16:34 1 z.txt [/Code] [einzugeben am CMD-Prompt == mit ">" gekennzeichnet] das kleine "z", dass ich in der Datei haben will OHNE CRLF danach wird dadurch sofort geschrieben, dass ich direkt nach dem "z" die Tastenkombination CTRL-Z drücken, die als Ende-der-Datei interpretiert wird. Das geht IMHO nur vom CMD-Prompt aus, nicht in einer Batch. Grüße Biber
  14. Moin michel0203, im batch müssen alle "einfachen" Prozentzeichen vor Zählvariablen durch "doppelte" ersetzt werden. for %%i in (D:\batches_scripte\Spielwiese\*.xyz) do @( for /f "delims=1234567890" %%a in ("%~ni") do @( echo Ist ren "%%i" "%%a%%~xi" Echo Soll: ren "D:\batches_scripte\Spielwiese\aaaaa11111.xyz" "aaaaa.xyz" )) [/Code] Debuggen von Einzeilern ist ein bisschen tricky, aber wenn es bezahlt wird, mach ich Dir das auch ;-) Grüße Biber
  15. Moin torstenv, echo ping localhost^>nul>sleep.bat [/Code] Zeichen können im Batch/am CMD-Prompt mit Caret ("^") maskiert werden, d.h. werden dann nicht als Steuerzeichen, sondern als einfacher Text interpretiert. Allerdings nur einmalig, d.h. bei jedem Interpretieren durch die CMD.exe (also das Lesen und Ausführen so einer Zeile) wird ein Caret entfernt. In der Datei kommt es also ohne "^" an. Grüße Biber
  16. Moin michel0203, falls die Anforderung auch umformuliert werden kann in "entferne alle Ziffern aus dem Dateinamen", sprich alle Dateinamen beginnen mit einer Buchstabenfolge, die erhalten bleiben soll gefolgt von einer Zahlenfolge, die entsorgt werden darf, dann reicht eine kleine Zeile vom CMD-Prompt aus. Demo: >for %i in (d:\temp\*.xyz) do @for /f "delims=1234567890" %a in ("%~ni") do @echo ren "%i" "%a%~xi" ren "d:\temp\aaaaa11111.xyz" "aaaaa.xyz" [/Code] Aber so oder so wirst Du Schwierigkeiten bekommen, alle "noch nicht umbenannten" Dateien zu trennen von den bereits umbenannten, wenn Du diese Zeile mehrmals abfeuerst. Um Fehler beim Rename zu vermeiden, solltest Du also ergänzen. [Code].....do IF "%~ni" NEQ "%a" ren "%i" "%a%~xi" [/Code] ...um zu vermeiden, dass versucht wird, "aaaaa.xyz" in "aaaaa.xyz" umzubenennen. Grüße Biber
  17. Moin michasurma, versuch es so: @echo off & setlocal EnableDelayedExpansion SET /a S=0 SET /a T=0 FOR /F %%B IN ( listen\server.txt ) do ( net use \\%%B\IPC$ /USER:Domain\Benutzer Passwort apps\sc.exe \\%%B query AgentServer | apps\qgrep.exe -y "running" >NUL IF ERRORLEVEL 1 (SET /A "T+=1") ELSE SET /A "S+=1" echo STOPPED:!T! echo STARTED:!S! net use \\%%B\IPC$ /DELETE ) pause [/Code] [ungetestet] Grüße Biber
  18. Moin eismanhobbit, Zum Beispiel so... ... Strdate = cstr(year(date)) & right(cstr(100+month(date)),2) & right(cstr(100+day(date)),2) ... [/Code] Bitte setze auch in den anderen Foren, in denen Du Deine Frage gepostet hast, den Beitrag mit Angabe einer Lösungsstrategie auf "Erledigt". Danke Biber
  19. Moin Kevin26, setze an den Anfang Deiner "C:\Users\test\Desktop\test\test.bat"-Datei den Befehl: Pushd "%~dp0" [/Code] ...und an das Ende der Ordnung halber ein "PopD". Grüße Biber
  20. Biber

    Batch-Script

    Moin tomgr, 1. Deine ursprüngliche Fragestellung, so wie ich sie wahrgenommen habe war:
  21. Moin schmitty, ich versuche es... if exist z:\ ( for /f "tokens=2" %%i in ('net use z:^|find "\\"') do @( if /i "%%i" NEQ "\\serverx\shareY" net use z: /d )) .. [/Code] ... Schrittweise. ----> if exist z:\ ( --> wenn Z. existiert ---> for /f "tokens=2" %%i in --> nimm das zweite Token der Ausgabe von... ---> ('net use z:^|find "\\"') ---> Ausgabe von "net use z:", aber nur die Zeile mit "\\" ---- (am besten mal am CMD-Prompt testen) -- das 2. Token ist "\\serverX\shareY" ---- und dieses token steht in der Variablen %%i ---> do @( --> und mache damit ---> if /i "%%i" NEQ "\\serverx\shareY" ---> wenn dieses %%i nicht gleich dem gewollten Lw ist.. ---> net use z: /d ---> dann trenne Z: ----> )) Grüße Biber
  22. Na ja, schmitty, ich weiß ja nicht genau, ob diese ersparte Zeit bei Euch eine Dividendenausschüttung ungeahnten Ausmaßes auslösen wird... ...... (irgendwo in Deinem Turbo-Batch...) if exist z:\ for /f "tokens=2" %%i in ('net use z:^|find "\\"') do @if /i "%%i" NEQ "\\serverx\shareY" net use z: /d if not exist z: net use Z: \\serverx\shareY /persistent=yes ... [/Code] Grüße Biber
  23. Moin schmitty, natürlich kannst Du, falls ein Laufwerk Z. schon vorhanden ist, Dir mit net use -oder gezielt mit - net use z: [/Code] ...anzeigen lassen, welcher Server/welches Share sich dahinter verbirgt. Aber wozu? Wenn doch hinterher auf jeden Fall z:\ Deinem "\\serverX\shareY" zugeordnet werden soll... Hau einfach zu Beginn Deines Skriptes alles weg, was per "net use" verbunden ist [Code] net use * /d [/Code] Oder aber Du vertraust wirklich darauf, dass Dein Parameter /persistent sinnvoll ist und mappst gar nix ab dem zweiten Mal. Grüße Biber
  24. Biber

    Batch-Script

    Moin tomgr, da Du ja nun etwas vom Verzeichnis c:\windows\system32 schreibst, scheint es sich nun doch nicht um ein DOS-Environment zu handeln, sondern um das der CMD.exe. Dann könntest Du von folgendem Ansatz (bitte testen am CMD-Prompt) ausgehen. [Alle drei Zeilen eingeben und die ausgabe im Auge behalten] set "filemask=\LOG\cas_user_logs\smtp\ J*.LOG" for /f %i in ('dir %filemask% ^|find "Datei(en)"') do @set /a "toskip=%i-2" for /f "skip=%toskip%" %i in ('dir %filemask% /b /o:d') do @echo %i [/Code] Dann sollten die frischesten beiden Logfiles angezeigt werden. Wenn es tut, dann pack das in einen Batch, ersetze alle %i durch %%i und ändere den Demo-Teil ("echo %i") in "copy %i d:\ein\neues\zuhause\ Grüße Biber
×
×
  • Neu erstellen...