52188
Goto Top

Batch soll TAB in Textdatei einfügen

Hallo wieder mal.

Ist wahrscheinlich ein sehr kleines Problem, aber ich komm einfach nicht weiter.
Wie in meinem Beitrag davor habe ich nun ein problem. Ich bekomme am Ende eine Textdatei mit Userpfaden und Uhrzeit. Nun soll hinter dem Userpfad ein oder 2 Tabs sein und dann erst das Datum, um es halt optisch zu verbessern. Wie mache ich das mit meiner Batch?

for /r "x:\" %%i in (bookmark.nsf?) do @wasfile "%%i" modified before today-42 && echo %%i %%~ti >> "c:\documents and settings\%username%\desktop\user.txt"

Content-Key: 81794

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

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

Member: miniversum
miniversum Feb 27, 2008 at 12:33:32 (UTC)
Goto Top
set "tab= " & REM Dies hier ist ein Tab
for /r "x:\" %%i in (bookmark.nsf?) do @wasfile "%%i" modified before today-42 && echo %%i%tab%%%~ti >> "c:\documents and settings\%username%\desktop\user.txt"
Member: Biber
Biber Feb 27, 2008 at 15:51:40 (UTC)
Goto Top
...alternativ könntest Du auch auf die Variable %tab% verzichten und einen (zwei, drei) Tabs direkt nach der DO-Anweisung eingeben.

Aber der TAB funktioniert halt nur in einer Batch-Datei, d.h. in irgendeinem abgespeicherten Textfile und nicht am CMD-Prompt selbst.
Dort ist es nicht möglich, einen TAB in eine zu testende FOR-Anweisung einzubauen.

Weitere Alternative wäre das "Padden" des Strings (Verlängern um z.B. 100 Leerzeichen und anschließendes Verwenden der ersten 100 Zeichen des Gesamtstrings).
Also in etwa als Pseudocode "Left(Dateiname+Spaces(100),100) + Uhrzeit"

Aber wenn ein Tab reicht, dann lassen wir das mal so...

Grüße
Biber
Mitglied: 52188
52188 Feb 27, 2008 at 16:36:04 (UTC)
Goto Top
STOPP Erzähl mir mehr davon
Member: Biber
Biber Feb 27, 2008 at 17:08:51 (UTC)
Goto Top
Moin wurzel87,

Beispiel:
@echo off % setlocal
Set /a "max=100, toDo=100" & Set "spaces="  
:EinSpaceDazu
Set "spaces=%spaces% "  
set /a todo-=1
if %todo% GTR 0 goto :EinSpaceDazu

REM Hier sollten 100 Leerzeichen in der Variablen %spaces% angekommen sein.

for /r "x:\" %%i in (bookmark.nsf?) do (  
      wasfile "%%i" modified before today-42 && call :SchreibsWech "%%i" %%~ti  
)

goto :eof

~~~~~~~
:SchreibsWech Parameter1 Pfad/Dateiname ; Parameter2 datum Parameter3 Uhrzeit [ignoriert]
Echo [Debug] Pfad/Dateiname [%~1] Datum [%2] Uhrzeit [%3]
Set "Temptext=%~1 %spaces%"    
REM in der Vorzeile werden viele Leerzeichen an Param1 [=Dateiname] angehängt in einer neuen Variablen temptext
REM in der nächsten Zeile werden von %temptext% die ersten 30 Zeichen genommen bzw. das ~0,29 macht das...
REM Danach der Parameter2/Datum angehängt und alles ausgegeben.
Echo %temptext:~0,29% %2
goto :eof

Grüße
Biber
Mitglied: 52188
52188 Feb 28, 2008 at 09:55:21 (UTC)
Goto Top
Funktioniert schon fast top, aber jetzt hab ich ds Problem dass er das ganze nur einmal macht und nicht mehr das ganze Laufwerk durchsucht.
Member: Biber
Biber Feb 28, 2008 at 10:08:59 (UTC)
Goto Top
Moin wurzel87,

hab ich nicht verstanden.... ich habe ein Beispiel für "Padding" statt TABs-Einschieben gepostet und an Deiner FOR-Konstruktion nichts angefasst.

Dann muss es also wohl andere Ursachen haben.
Eventuell könnte ein Posten Deines jetzigen Schnipsel-Standes helfen...

Grüße
Biber
wenn es eine Gesprächseröffnung gibt, die jedem Entwickler das Herz weit macht, dann ist es "Funktioniert schon fast top, aber ...
Mitglied: 52188
52188 Feb 28, 2008 at 10:24:22 (UTC)
Goto Top
Sorry, mein Fehler, geht doch jetzt, vielen Dank