Von Txt nach xls
Daten einer .txt Datei in eine Excel Datei importieren
Hallo,
nach dem ich es nun geschafft habe (hier) per Anmeldung an Informationen von Usern abzurufen, habe ich nun eine txt Datei die ich gerne in eine xlx Datei importieren möchte. Das Format der txt Datei ist immer gleich
Beispiel:
Um mehrere txt Dateien zusammenzufassen habe ich mittels diesen Befehls geschafft:
Unterschiedlich ist natürlich nur welche Dateien ein User eingebunden hat. Wichtig ist für mich, dass folgende Informationen übertragen werden:
- Dateiname
- Folder Name
- Path
- Format
- Size
Gruß,
bad3m3ist3r
Hallo,
nach dem ich es nun geschafft habe (hier) per Anmeldung an Informationen von Usern abzurufen, habe ich nun eine txt Datei die ich gerne in eine xlx Datei importieren möchte. Das Format der txt Datei ist immer gleich
Beispiel:
Microsoft (R) Windows Script Host, Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.
Found 1 profile for this user.
Default Profile: Default Outlook Profile
Checking Profile: Default Outlook Profile ...
Found totally 2 personal folder under profile Default Outlook Profile.
Folder Name: Persönliche Ordner 2
Path: U:\Outlook\Persönliche Ordner.pst
Format: 2003
Size: 6.042.043.392 Bytes
Folder Name: Archivordner
Path: C:\Dokumente und Einstellungen\Vorname_Nachname\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook\archive.pst
Format: 2003
Size: 6.620.160 Bytes
No old version personal folder found.
Quiting Script...
Um mehrere txt Dateien zusammenzufassen habe ich mittels diesen Befehls geschafft:
copy *.txt alle.txt
Unterschiedlich ist natürlich nur welche Dateien ein User eingebunden hat. Wichtig ist für mich, dass folgende Informationen übertragen werden:
- Dateiname
- Folder Name
- Path
- Format
- Size
Gruß,
bad3m3ist3r
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 177383
Url: https://administrator.de/contentid/177383
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
27 Kommentare
Neuester Kommentar
Hallo bad3m3ist3r (für Deinen Nickname braucht man glücklicherweise nur copy&paste),
mal völlig unabhängig von dem anderen Thread, wenn ich Daten nach Excel exportieren möchte, dann bereite ich die so auf, dass ich sie direkt mit Excel öffnen kann.
Das heißt, anstatt jeden Datensatz in eine eigene Textdatei zu schreiben und dann einen weiteren Zwischenschritt zusammen zu frickeln um es für Excel lesbar zu machen, würde ich alle Datensätze in eine csv-Datei schreiben. csv-Dateien kann Excel direkt öffnen.
Markus
Aloha,
ich schieb' dir mal was zu: ich wusste doch, man sieht sich in 'nem neuen Thread
Wozu du jetzt den Dateinamen der Liste einpflegen willst, ist mir unklar, daher habe ich ihn weggelassen :P
greetz André
ich schieb' dir mal was zu: ich wusste doch, man sieht sich in 'nem neuen Thread
@echo off & setlocal
set /a cnt=0
>%temp%\spalten.csv echo Name;Path;Format;Size
chcp 1252>nul
for /f "usebackq skip=9 tokens=1,* delims=:" %%s in ("testdatei.txt") do call :Ablauf "%%t"
chcp 850>nul
pause
goto :eof
:Ablauf
if %cnt% lss 4 set /a cnt+=1
set "Sp%cnt%=%~1"
if %cnt% equ 4 (
set cnt=0
>>%temp%\spalten.csv echo %Sp1%;%Sp2%;%Sp3%;%Sp4%
)
goto :eof
greetz André
@echo off & setlocal
echo Dateiname;Name;Path;Format;Size>%temp%\spalten.csv
chcp 1252>nul
set "pfad=E:\Skripte"
for /f "delims=" %%m in ('dir /b /a-d "%pfad%\*.txt"') do (
set /a cnt=0
for /f "usebackq skip=9 tokens=1,* delims=:" %%s in ("%pfad%\%%m") do call :Ablauf "%%m" "%%t"
)
chcp 850>nul
pause
goto :eof
:Ablauf
if %cnt% lss 4 set /a cnt+=1
set "Sp%cnt%=%~2"
if %cnt% equ 4 (
set cnt=0
echo "%~1";%Sp1%;%Sp2%;%Sp3%;%Sp4%>>%temp%\spalten.csv
)
goto :eof
[OT]
Moin Skye,
na, wart doch noch einen Moment ab...
Vielleicht kommt ja noch eine/r vorbei und sagt
Das verwendete Scriptcenter-Skript von den PraktikantInnen ist doch nur zur Demo gedacht und produziert ja nun einen mäßig strukturierten Textbrei - so wie jeder Praktikant halt die Debug-Ausgaben auf den Schirm rausmült.
Ich sach mal so- das Schöne an der jetzt als Lösung akzeptierten Mimik ist natürlich, dass es funktioniert und ja auch der Beitrag abgegrünt ist.
Andererseits muss der ärmste bad3m3ist3r nun schon nacheinander zwei (für einen Laien) absolut unverständliche Skriptstrunkeleien pflegen (und ganz doll auf READ ONLY setzen bis zum Ende der Migration) und er hat noch nicht mal einen Anhaltspunkt, wie es denn mit den Daten in der Excel-Tabelle dann weitergeht.
Deshalb..... auch wenn jetzt "schon mal was da ist, was man brauchen könnte.."
-> Eventuell steigern wir uns noch.
Grüße
Biber
[/OT]
Moin Skye,
Zitat von @Skyemugen:
tust du mir noch den Gefallen und verschiebst den Thread aus der Sichtbaren Basis nach Bätsch & Hell?
tust du mir noch den Gefallen und verschiebst den Thread aus der Sichtbaren Basis nach Bätsch & Hell?
na, wart doch noch einen Moment ab...
Vielleicht kommt ja noch eine/r vorbei und sagt
"Ja hey! Wieso zieht ihr denn da kleine Fädchen aus dem erzeugten Textknäuel.... ??
Wieso lasst ihr nicht das M$-LocatePST.vbs-Schnipselchen gleich ein paar CSV-Zeilen rausdrücken?"
Wieso lasst ihr nicht das M$-LocatePST.vbs-Schnipselchen gleich ein paar CSV-Zeilen rausdrücken?"
Das verwendete Scriptcenter-Skript von den PraktikantInnen ist doch nur zur Demo gedacht und produziert ja nun einen mäßig strukturierten Textbrei - so wie jeder Praktikant halt die Debug-Ausgaben auf den Schirm rausmült.
Ich sach mal so- das Schöne an der jetzt als Lösung akzeptierten Mimik ist natürlich, dass es funktioniert und ja auch der Beitrag abgegrünt ist.
Andererseits muss der ärmste bad3m3ist3r nun schon nacheinander zwei (für einen Laien) absolut unverständliche Skriptstrunkeleien pflegen (und ganz doll auf READ ONLY setzen bis zum Ende der Migration) und er hat noch nicht mal einen Anhaltspunkt, wie es denn mit den Daten in der Excel-Tabelle dann weitergeht.
Deshalb..... auch wenn jetzt "schon mal was da ist, was man brauchen könnte.."
-> Eventuell steigern wir uns noch.
Grüße
Biber
[/OT]
[OT]
Aloha Biber,
ich war mir zu 100% sicher, dass man die .txt so gar nicht benötigt und dass das sicherlich aus dem 1. Skript / Thread heraus umsetzbar wäre ^__^ da jedoch batch eher meine Stärke ist als vbs und heute noch kein bastla oder Friemler hier visuelle Bestände produziert haben, war ich eben so dreist und hab' ihm 'n Bätsch gebätschelt *ätsch*
Ganz ehrlich: Der Thread passt dennoch in den B-Bereich, denn das Endresultat-VBS kann man auch aus seinem Thread #1 hervorrufen und wäre die direkte Abhandlung dessen denn hier hat er bereits eine .txt also ist das Fundament für ein VBS damit Thread #1 und net dieser hier :P
greetz André
[/OT]
Aloha Biber,
ich war mir zu 100% sicher, dass man die .txt so gar nicht benötigt und dass das sicherlich aus dem 1. Skript / Thread heraus umsetzbar wäre ^__^ da jedoch batch eher meine Stärke ist als vbs und heute noch kein bastla oder Friemler hier visuelle Bestände produziert haben, war ich eben so dreist und hab' ihm 'n Bätsch gebätschelt *ätsch*
Ganz ehrlich: Der Thread passt dennoch in den B-Bereich, denn das Endresultat-VBS kann man auch aus seinem Thread #1 hervorrufen und wäre die direkte Abhandlung dessen denn hier hat er bereits eine .txt also ist das Fundament für ein VBS damit Thread #1 und net dieser hier :P
greetz André
[/OT]
[OT as OT can]
Moin Skye,
Okay, okay.... wenn ihr versprecht, nicht immer B-Bereich zu dem Trainingsplatz unseres A-Teams zu sagen.... ich verschiebe es dahin.
Grüße
Biber
[/OT as OT can]
Moin Skye,
Okay, okay.... wenn ihr versprecht, nicht immer B-Bereich zu dem Trainingsplatz unseres A-Teams zu sagen.... ich verschiebe es dahin.
Grüße
Biber
[/OT as OT can]
Aloha gebadeter *fg*,
es ging hier eben weniger darum, den Thread in Frage zu stellen als die Abhandlung per .txt und .bat, da Biber und ich der Meinung sind/waren, dass man die .csv auch direkt aus dem .vbs heraus erstellen könnte leider fand sich dazu bisher keiner unserer Experten *gg*
Um mehr ging es gar nicht. Wenn ich dumme Fragen vor mir hätte, würde ich nichts konstruktives in codeboxen posten
greetz André
es ging hier eben weniger darum, den Thread in Frage zu stellen als die Abhandlung per .txt und .bat, da Biber und ich der Meinung sind/waren, dass man die .csv auch direkt aus dem .vbs heraus erstellen könnte leider fand sich dazu bisher keiner unserer Experten *gg*
Um mehr ging es gar nicht. Wenn ich dumme Fragen vor mir hätte, würde ich nichts konstruktives in codeboxen posten
greetz André
Aloha,
sofern das Skript nicht angefasst wurde, kann ich das Problem so erst einmal nicht nachvollziehen, bitte setze in Zeile 01 das echo on statt off und füge vor dem letzten
##blue|##
Das Problem könnte also am Inhalt der .txt selber liegen ... sofern das Skript wirklich nicht editiert wurde, denn mit dem Namenszusatz funktioniert das bei mir weiterhin einwandfrei.
Hat der Gerätename Sonderzeichen?
greetz André
sofern das Skript nicht angefasst wurde, kann ich das Problem so erst einmal nicht nachvollziehen, bitte setze in Zeile 01 das echo on statt off und füge vor dem letzten
goto :eof
noch eine pause
hinzu, um dir den Ablauf des Skriptes in der cmd anzuschauen, wenn du willst, kannst du auch den gesamten cmd-Inhalt c&p aber dann hier bitte mit##blue|##
>>".pst"
sieht aus, als ob das Skript in ".pst" schreiben will, die Fehlermeldung betrifft jedoch eher den funktionalen Ablauf einer der Schleifen ... which makes no sense whatsoeverDas Problem könnte also am Inhalt der .txt selber liegen ... sofern das Skript wirklich nicht editiert wurde, denn mit dem Namenszusatz funktioniert das bei mir weiterhin einwandfrei.
Hat der Gerätename Sonderzeichen?
&|%<>!
... könnte ein &
sein, würde ich jetzt vermutengreetz André
Aloha,
ah dann nutze ich eben doch die verzögerte Variablenerweiterung
So, damit darf auch in den anderen Zeilen derartiger Käse vorkommen
greetz André
ah dann nutze ich eben doch die verzögerte Variablenerweiterung
@echo off & setlocal
echo Dateiname;Name;Path;Format;Size>%temp%\spalten.csv
chcp 1252>nul
set "pfad=E:\Skripte"
for /f "delims=" %%m in ('dir /b /a-d "%pfad%\*.txt"') do (
set /a cnt=0
for /f "usebackq skip=9 tokens=1,* delims=:" %%s in ("%pfad%\%%m") do call :Ablauf "%%m" "%%t"
)
chcp 850>nul
pause
goto :eof
:Ablauf
if %cnt% lss 4 set /a cnt+=1
set "Sp%cnt%=%~2"
if %cnt% equ 4 (
set cnt=0
setlocal enabledelayedexpansion
echo "%~n1";!Sp1!;!Sp2!;!Sp3!;!Sp4!>>%temp%\spalten.csv
endlocal
)
goto :eof
So, damit darf auch in den anderen Zeilen derartiger Käse vorkommen
greetz André
Aloha,
das beantworte ich dir, wenn ...
das ist nämlich deutlich aufwändiger dann ...
greetz André
P.S.: Wenn ein User mehrere Profile hat, würde ich mir mal Gedanken über eure Arbeitsstruktur machen
P.P.S.: Wenn das bei zwei von 50 Dateien vorkäme ... ist der kürzere Weg, du guckst welcher Dateiname das ist und arbeitest die selber um :P
was ist wenn
das beantworte ich dir, wenn ...
das ist nämlich deutlich aufwändiger dann ...
Checking Profile: blabla
ist nämlich der Knackpunkt greetz André
P.S.: Wenn ein User mehrere Profile hat, würde ich mir mal Gedanken über eure Arbeitsstruktur machen
P.P.S.: Wenn das bei zwei von 50 Dateien vorkäme ... ist der kürzere Weg, du guckst welcher Dateiname das ist und arbeitest die selber um :P
Aloha,
so, kaum ist man zuhause, arbeitet das Hirn auch wieder
ist natürlich Blödsinn, dass es deutlich aufwändiger wäre, ich kann ja gleich filtern
greetz André
so, kaum ist man zuhause, arbeitet das Hirn auch wieder
ist natürlich Blödsinn, dass es deutlich aufwändiger wäre, ich kann ja gleich filtern
@echo off & setlocal
echo Dateiname;Name;Path;Format;Size>%temp%\spalten.csv
chcp 1252>nul
set "pfad=E:\Skripte"
for /f "delims=" %%m in ('dir /b /a-d "%pfad%\*.txt"') do (
set /a cnt=0
for /f "tokens=1,* delims=:" %%s in ('findstr /i "Name: Path: Format: Size:" "%pfad%\%%m"') do call :Ablauf "%%m" "%%t"
)
chcp 850>nul
pause
goto :eof
:Ablauf
if %cnt% lss 4 set /a cnt+=1
set "Sp%cnt%=%~2"
if %cnt% equ 4 (
set cnt=0
setlocal enabledelayedexpansion
echo "%~n1";!Sp1!;!Sp2!;!Sp3!;!Sp4!>>%temp%\spalten.csv
endlocal
)
goto :eof
greetz André
Hallo @all!
Wenn schon die Experten sich keine Zeit nehmen, kann ja ich vielleicht (spät, aber doch noch) etwas beitragen: Es sollte doch genügen, im VBScript die folgenden beiden Blöcke ersatzweise zu verwenden:
und
um nur die relevanten Infos auszugeben - dann noch das Ganze mit
starten und so in einer einzigen Datei alle Einträge sammeln.
Grüße
bastla
Wenn schon die Experten sich keine Zeit nehmen, kann ja ich vielleicht (spät, aber doch noch) etwas beitragen: Es sollte doch genügen, im VBScript die folgenden beiden Blöcke ersatzweise zu verwenden:
Sub DispLine(Text)
'WScript.StdOut.WriteLine Text
End Sub
Sub DispPSTInfo(arrFolders)
Set Net = CreateObject("WScript.Network")
Delim = ";" 'Trennzeichen für CSV-Datei
For i = LBound(arrFolders, 2) To UBound(arrFolders, 2)
WScript.StdOut.WriteLine Net.Computername & Delim & Net.Username & Delim & arrFolders(0, i) & Delim & arrFolders(1, i) & Delim & arrFolders(2, i) & Delim & FormatNumber(fso.GetFile(arrFolders(1, i)).Size,0,,-1)
Next
End Sub
findstr /i /b /c:"%computername%;%username%" \\Server\Share\Sammeldatei.csv>nul||cscript //nologo checkpst.vbs>>\\Server\Share\Sammeldatei.csv
Grüße
bastla