WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   text files per batch job bearbeiten (http://www.wcm.at/forum/showthread.php?t=106865)

spunz 27.08.2003 13:42

text files per batch job bearbeiten
 
gibt es mit windows boardmitteln die möglichkeit wie unter linux mit diversen tools (cat, grep, awk,..) textfiles zu erstellen bzw zu bearbeiten?

zb ein script das diverse laufwerke abfragt und nur die interessanten zeilen raussucht:

Code:

dir c: >test.txt
dir g: >>test.txt
dir \\server1\c$ >>test.txt
dir \\server1\d$ >>test.txt
dir \\server3\c$ >>test.txt
grep "Bytes frei" test.txt >frei.txt

die zeilen schaun dann ca so aus: " 24 Verzeichnis(se), 26.158.358.528 Bytes frei", wie bekomme ich die ungewünschten wörter und zeichen am einfachsten raus? die grep.exe usw ist ja noch recht einfach zu bekommen, aber awk hab ich nur im cygwin paket gefunden welches ich jetzt nicht wirklich komplett installieren will.

käptn 27.08.2003 14:07

Da sollte alles dabei sein, was du brauchst, obwohl du nicht wirklich dazugeschrieben hast was du tun willst. :)

~

flinx 27.08.2003 14:14

ev. find ?:
Code:

D:\>dir /s c:\winnt |find "Bytes frei"
            446 Verzeichnis(se),  8.268.189.696 Bytes frei

Ev. ist http://unxutils.sourceforge.net/ auch einen Blick wert.

renew 27.08.2003 14:23

@spunz

im C'T 15/2003 (ich glaub das wars) is ein absolut genialer Artikel zur Programmierung für die Command-Line.

Sie schreiben etwas über Stringbearbeitung, wie man mit div. Werten rechnet usw.
Es ist halt nur eine riesen Spielerei bis es so funkt wie man will und so was angedeutet wurde geht noch wesentlich mehr. Aber man muss sich glaub ich wirklich damit beschäftigen, da es natürlich net wirklich mit einer konventionellen Programmiersprache vergleichbar ist.


Eine andere Möglichkeit wäre natürlich, das ganze via VBS zu machen, welches dann von einem Batch-File aufgerufen wird - falls das gebraucht wird.

spunz 27.08.2003 15:01

ich will den freien speicher diverser partitionen auf verschiedenen server sammeln und die reinen "zahlen" weiterverwenden. die frage ist also, wie bekomme ich die wörter (446 Verzeichnis(se), Bytes frei) raus damit ich nur noch die zahlen habe (mit windows boardmitteln, wenn möglich)

edit: fehlt nur noch das m3 mit perl kommt :D (was zugegeben nicht schlecht wäre, wenns bei win dabeiwäre :( )

renew 27.08.2003 15:23

Zitat:

Original geschrieben von spunz
ich will den freien speicher diverser partitionen auf verschiedenen server sammeln und die reinen "zahlen" weiterverwenden. die frage ist also, wie bekomme ich die wörter (446 Verzeichnis(se), Bytes frei) raus damit ich nur noch die zahlen habe (mit windows boardmitteln, wenn möglich)

edit: fehlt nur noch das m3 mit perl kommt :D (was zugegeben nicht schlecht wäre, wenns bei win dabeiwäre :( )

Was ich mich an den Artikel erinnere, sollte es theoretisch funktionieren. Nur wie schon gesagt, es ist bei Gott nicht leicht eine funktionierende Lösung über die Commandline zu erstellen. Da muss man sich sicher lang damit spielen.

Willst du die Partitionen übers Netz abfragen - oder nur lokal? (weil übers Netz stell ich es mir schwierig vor...)

Wegen Boardmitteln: VBS ist auch ein Windows Boardmittel - sofern man es nicht abgedreht hat. :) (weil du nix dazu geschrieben hast, ob du VBS verwenden willst/kannst ;))

käptn 27.08.2003 15:27

Mit Windows (und grep :D ):

dir | grep -Po '[\d\.]+ Bytes frei' | grep -Po '[\d\.]+'

~

flinx 27.08.2003 15:43

Bordmittel (ohne grep :) ):
Code:

@echo off
setlocal
dir c:\ |find "Bytes frei" >test.txt
for /f "tokens=3" %%i in ('type test.txt') do set bytesc=%%i
dir d:\ |find "Bytes frei" >test.txt
for /f "tokens=3" %%i in ('type test.txt') do set bytesd=%%i
echo %bytesc%  <-- mit Punkt
echo %bytesd%
for /f "tokens=1-6 delims=./" %%i in ('echo %bytesc%') do set sumc=%%i%%j%%k%%l%%m%%n
for /f "tokens=1-6 delims=./" %%i in ('echo %bytesd%') do set sumd=%%i%%j%%k%%l%%m%%n
echo %sumc%  <-- ohne Punkt
echo %sumd%

Ohne Gewähr, daß es richtig ist! :D

spunz 27.08.2003 15:49

hm, so schauts mal ganz gut aus. hab flinx´s script etwas geändert:

Code:

setlocal
dir c:\ |find "Bytes frei" >test.txt
for /f "tokens=3" %%i in ('type test.txt') do set bytesc=%%i
dir g:\ |find "Bytes frei" >>test.txt
for /f "tokens=3" %%i in ('type test.txt') do set bytesd=%%i
echo %bytesc%
echo %bytesd%
for /f "tokens=1-10 delims=./" %%i in ('echo %bytesc%') do set sumc=%%i%%j%%k%%l%%m%%n
for /f "tokens=1-10 delims=./" %%i in ('echo %bytesd%') do set sumd=%%i%%j%%k%%l%%m%%n
echo %sumc% >fertig.txt
echo %sumd% >>fertig.txt

jetzt muß ich das nur noch in mein diagramm script reinbekommen :)

flinx 27.08.2003 16:00

Kompakter:
Code:

dir c:\ d:\ |find "Bytes frei" >test.txt
for /f "tokens=3" %%i in ('type test.txt') do echo %%i >>fertig.txt  <-- mit Punkt
for /f "tokens=1-6 delims=." %%i in ('type fertig.txt') do echo %%i%%j%%k%%l%%m%%n >>fertig2.txt  <-- ohne Punkt



Alle Zeitangaben in WEZ +2. Es ist jetzt 23:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag