automatisch Datei erstellen über Button Bar

German support forum

Moderators: white, Hacker, Stefan2

User avatar
pbelcl
Senior Member
Senior Member
Posts: 212
Joined: 2003-02-28, 07:21 UTC
Location: Wien
Contact:

automatisch Datei erstellen über Button Bar

Post by *pbelcl »

Hi,
Ich würde gerne eine einen Knopf in meiner Button Bar erstellen, der mir eine Datei mit dem Datum und einer bestimmten Endung im Notepad++ erstellt.
Ich bin schon so weit, dass ich eine Datei erstellen kann bei der die Dateiendung vorgegeben ist.
Nur das mit dem Datum bekomm ich nicht hin!

Ich will dass beim Erstellen dort schon das aktuelle Datum und eventuell die Uhrzeit vor der Dateiendung steht.
IN den Parameter Variablen des TTC gibt finde ich allerdings kein Datum!

Geht das mit dem TTC überhaupt??
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

Geht das mit dem TTC überhaupt??
Nein, nicht direkt. Umweg über eine Batch-Datei geht jedoch immer. Dort existieren die Umgebungsvariablen %date% und %time%, deren Ausgabeformat allerdings von den aktuellen Windowssystemeinstellungen abhängig sein.

Beispiel:

Code: Select all

echo %date:~-2,2%%date:~3,2%%date:~0,2%
Gibt heute "170831" aus

Beispiel für einen Button

Code: Select all

TOTALCMD#BAR#DATA
%comspec% /kecho .> %date:~-2,2%%date:~3,2%%date:~0,2%.txt

totalcmd.exe,21
Textdatei mit Datum erstellen.
.

-1
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6449
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Post by *Horst.Epp »

Das geht mit Hilfe von Nircmd

Zum Beispiel:

Code: Select all

TOTALCMD#BAR#DATA
C:\Tools\NirSoft\x64\nircmd.exe
exec show "notepad.exe" ~$currdate.MM_dd_yyyy$.txt
%COMMANDER_PATH%\TOTALCMD64.EXE,3
nircmd


-1

Anstelle Notepad.exe den Pfad zu deinem Editor
und die passende Variable als Parameter aus der Hilfe von Nircmd
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
User avatar
pbelcl
Senior Member
Senior Member
Posts: 212
Joined: 2003-02-28, 07:21 UTC
Location: Wien
Contact:

Danke für eure Tipps!

Post by *pbelcl »

Danke für eure Tipps!
Ich bin allerdings mit der Umsetzung etwas überfordert, weil ich bisher die ButtonBar immer über die GUI verwaltet habe.

Dachte das geht etwas einfacher ohne zusätzliche Tools ;-)
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6449
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: Danke für eure Tipps!

Post by *Horst.Epp »

pbelcl wrote:Danke für eure Tipps!
Ich bin allerdings mit der Umsetzung etwas überfordert, weil ich bisher die ButtonBar immer über die GUI verwaltet habe.

Dachte das geht etwas einfacher ohne zusätzliche Tools ;-)
Mein Beispiel im Code oben kannst du einfach kopieren
und auf der Buttonbar im TC per rechter Maustaste einfügen.
Dann bekommst du einen entsprechenden Button,
den du dann mit dem GUI ändern kannst.
Logischerweise musst du die Pfade anpassen und NirCmd downloaden.
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
User avatar
pbelcl
Senior Member
Senior Member
Posts: 212
Joined: 2003-02-28, 07:21 UTC
Location: Wien
Contact:

Post by *pbelcl »

Danke Horst.Epp!
Ich wollte zwar anfangs kein externes Tool für diese Lösung verwenden, aber mit nircmd.exe klappt es gut!

Habe deine Befehlszeile etwas angepasst:

Code: Select all

exec show "c:\Progs\totalcmd\Tools\Notepad++\notepad++.exe" ~$currdate.yyyy-MM-dd$.lua
Leider funktioniert :

Code: Select all

exec show "%COMMANDER_PATH%\Tools\Notepad++\notepad++.exe" ~$currdate.yyyy-MM-dd$.lua
NICHT, somit ist das Ganze noch nicht wirklich portable, was mir sehr wichtig ist!!
Hast du dafür auch noch einen Tipp?

Und noch eine Frage:
Kann man die Bestätigung, dass die Datei noch nicht existiert, eventuell auch irgendwie umgehen. Soll einfach nur ohne Fragen erstellt werden!
User avatar
pbelcl
Senior Member
Senior Member
Posts: 212
Joined: 2003-02-28, 07:21 UTC
Location: Wien
Contact:

Beispiel von Norfie

Post by *pbelcl »

Hallo Norfie2
Hab mir gerade auch dein Beispiel angesehen, weil ich eigentlich lieber ohne Zusatztools arbeite!

Wenn ich den Befehle :

Code: Select all

%comspec% /kecho .> %date:~-2,2%%date:~3,2%%date:~0,2%.lua
Unter Kommando eingebe wird das File zwar erstellt, aber es bleibt die DOS Box im Hintergrund offen!
Kann man die irgendwie automatisch schliessen?

Hast du vielleicht auch noch einen Tipp wie ich in die Befehlszeile die Uhrzeit dazubekomme?
Am Besten im Format "hhmmss", das wär supernett, ich bin in Dos Batch nicht so der Profi ;-)
User avatar
sqa_wizard
Power Member
Power Member
Posts: 3854
Joined: 2003-02-06, 11:41 UTC
Location: Germany

Post by *sqa_wizard »

pbelcl: nimm statt /kecho einfach /cecho also

Code: Select all

%comspec% /cecho .> %date:~-2,2%%date:~3,2%%date:~0,2%.lua
#5767 Personal license
User avatar
pbelcl
Senior Member
Senior Member
Posts: 212
Joined: 2003-02-28, 07:21 UTC
Location: Wien
Contact:

Post by *pbelcl »

Hallo /Cecho hat geklappt, danke!

Jetzt muss ich mich nur noch mit der Uhrzeit spielen ;-)
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

2pbelcl
Wie soll die Uhrzeit ausschauen? Mit Sekunden?
Vorschlag:

Code: Select all

%comspec% /cecho .> "%date:~-2,2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.lua" 
Hat leider (bei mir) den Nachteil, dass von 0 bis 9 Uhr ein Leerzeichen im Dateinamen enthalten ist. :(

Beispiel für Batchlösungen
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
pbelcl
Senior Member
Senior Member
Posts: 212
Joined: 2003-02-28, 07:21 UTC
Location: Wien
Contact:

Post by *pbelcl »

Danke norfie², für deine Geduld!!

Dass bei der Zeit von 0-9 ein Leerzeichen ist, passt perfekt, dann sehen die Dateien optisch im Filemanager gleich aus ;-)

Das Format welches ich brauche habe ich mit etwas probieren schon hingekriegt!

Code: Select all

%comspec% /cecho .> "%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.lua"

Gibt es die Möglichkeit die erstellte Datei danach gleich mit dem Notepad++ zu öffnen?
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Um die führende Null zu erhalten, musst du etwas mehr Code einsetzen.

Code: Select all

C:\Windows\SysWOW64>echo %time:~0,2%
 8

C:\Windows\SysWOW64>SET T=%time:~0,2%
C:\Windows\SysWOW64>ECHO %T%
 8

C:\Windows\SysWOW64>SET T=%T: =%
C:\Windows\SysWOW64>ECHO %T%
8

C:\Windows\SysWOW64>IF %T% LSS 10 SET T=0%T%
C:\Windows\SysWOW64>ECHO %T%
08

-oder-

Code: Select all

C:\Windows\SysWOW64>SET T=%time:~0,2%
C:\Windows\SysWOW64>ECHO %T%
 8

C:\Windows\SysWOW64>SET T=0000%T: =%
C:\Windows\SysWOW64>ECHO %T%
00008

C:\Windows\SysWOW64>SET T=%T:~-2%
C:\Windows\SysWOW64>ECHO %T%
08
Hier ein kompletes Batchskript:

Code: Select all

@ECHO OFF
for /f "tokens=3 skip=1" %%A in ('REG QUERY "HKCU\Control Panel\International" /v Locale ') DO @SET Loc=%%A
if %Loc%==00000409 SET Loc=ENG
if %Loc%==00000407 SET Loc=DEU
GoTo _%Loc%

:_ENG
REM echo %date% --- %time% >>> Thu 10/10/2013 --- 16:12:42.46
SET D=0%date:~7,2%
SET M=0%date:~4,2%
SET Y=%date:~12,2%
GoTo _common

:_DEU
REM echo %date% --- %time% >>> 10.10.2013 --- 16:28:54,02
SET D=0%date:~0,2%
SET M=0%date:~3,2%
SET Y=%date:~8,2%
SET Y=%date:~6,4%
GoTo _common

:_common
SET D=%D: =%
SET D=%D:~-2%
SET M=%M: =%
SET M=%M:~-2%
SET H=0%time:~0,2%
SET H=%H: =%
SET H=%H:~-2%
SET N=0%time:~3,2%
SET N=%N: =%
SET N=%N:~-2%
SET S=%time:~6,2%
REM
SET timestamp=%Y%.%M%.%D%_%H%%N%%S%
GoTo _WORK


:_WORK
ECHO %Loc% timestamp: %timestamp%
ECHO do your work here....
PAUSE

- - -

Oder WMI verwenden, da ist die führende Null gleich enthalten:

Code: Select all

REM http://ss64.com/nt/syntax-stampme.html

  :: Get the date/time
  FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO Set _DTS=%%a
  
  Set _datetime=%_DTS:~0,4%-%_DTS:~4,2%-%_DTS:~6,2%@%_DTS:~8,2%-%_DTS:~10,2%-%_DTS:~12,2%
  REM 2016-02-29@13-45-37
  ECHO %_datetime%

  Set _datetime=%_DTS:~0,4%-%_DTS:~4,2%-%_DTS:~6,2%_%_DTS:~8,2%%_DTS:~10,2%%_DTS:~12,2% 
  REM 2016-02-29_134537 
  Echo %_datetime%

PAUSE


- - -

Oder als VBScript
TimeStamp FormatDate filename Test.vbs

Code: Select all

    N = Now
    W = WeekdayName( Weekday(N), true)
    D = Year(N) & Right("00" & Month(N), 2) & Right("00" & Day(N), 2)
    D2 = Year(N) &"-"& Right("00" & Month(N), 2) &"-"& Right("00" & Day(N), 2)
    T = Right("00" & Hour(N), 2) & Right("00" & Minute(N), 2) & Right("00" & Second(N), 2)

	msgbox D 
		'//20130620 
	msgbox D2
		'//2013-06-20 
	msgbox D & "_" & T
		'//20130620_082202
	msgbox D & "_" & W & "_" &T
		'//20130620_Do_083851


Oder Powershell

Code: Select all

$TimeStamp = "{0:yyyy}-{0:MM}-{0:dd}-{0:HHmmss}" -f (Get-Date) #Erg.: 2014-09-26-155050 

$TimeStamp = Get-Date -Format "yyyy-MM-dd-HHmmss" #Erg.: 2014-09-26-155050 



Noch mehr Beispiel und Tipps zur Dateierstellung und öffnen in einem Editor finden sich in den Tiefen des Forums.

zB auch mit Verwendung von Templates, zB um gleich Unicode-, oder vorbefüllte Dateien zu erstellen.


 
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Batch: Erstelle txt Datei mit aktuellem Timestamp

Post by *Stefan2 »

pbelcl wrote: Gibt es die Möglichkeit die erstellte Datei danach gleich mit dem Notepad++ zu öffnen?
Ich würde da eine Batchdatei (DOS/VBS/AHK/PoSh/...) erstellen und diese über den TC-Button aufrufen.

In solch einer Batchdatei hat man bessere Übersicht und mehr Möglichkeiten und erspart sich das escapen von Sonderzeichen im TC-Button.
Das funktioniert zB in der DOS-Box gut, aber muss zum Einsatz im Button noch umgebaut werden:
SET F="%date:~-2,2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.lua"&&nulll>>%F%&"%Commander_Path%\TOOLs\Notepad++\notepad++.exe" %F%


- - -

zB

TC-Button:

Kommando: %comspec% /c
Parameter: X:\Totalcmd\MeineTools\TC-Button - Erstelle Datei mit Timestamp.cmd

-oder mehr "portable":
Kommando: %comspec% /c
Parameter: ""%%COMMANDER_PATH%%\MeineTools\TC-Button - Erstelle Datei mit Timestamp.cmd"

(zum debuggen %comspec% /k verwenden)



Die Batch:

Code: Select all

@ECHO OFF
REM TC-Button - Erstelle Datei mit Timestamp.cmd
REM Freitag, 1. September 2017
REM Gefunden: https://ghisler.ch/board/viewtopic.php?p=331471#331471
REM Erstelle eine plain-txt Datei mit aktuellem Timestamp im aktiven TC-Panel


REM Alternative 1: Original DOS DATE/TIME mit fehlender führender Null:
REM SET _datetime="%date:~-2,2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%"

REM Alternative 2: WMI date/time inklusive führender Null:
FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO Set _DTS=%%a
Set _datetime=%_DTS:~2,2%%_DTS:~4,2%%_DTS:~6,2%_%_DTS:~8,2%%_DTS:~10,2%%_DTS:~12,2%
REM 160229_134537
Echo %_datetime% 


REM Kompletter Dateiname:
SET "MyFile=%_datetime%.lua" 
ECHO %MyFile%

REM Erstelle Datei und unterdrücke die Fehlermeldung:
nulll>%MyFile% 2>NUL
REM Der Befehl "nulll" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

REM Starte einen Texteditor mit dieser neuen Datei:
REM START "" notepad %MyFile%
    START "" "%Commander_Path%\TOOLs\Notepad++\notepad++.exe" %MyFile%

REM Fertig:
REM PAUSE
GOTO :EOF



Mein TC Button
-----------------------------------
TOTALCMD#BAR#DATA
%comspec% /c
""%%COMMANDER_PATH%%\TOOLs\CMDs\TC-Button - Erstelle Datei mit Timestamp.cmd""
C:\windows\System32\imageres.dll,122
Button - Erstelle Datei mit Timestamp

1
-1

-----------------------------------
:EOF




 
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

2pbelcl
Gibt es die Möglichkeit die erstellte Datei danach gleich mit dem Notepad++ zu öffnen?
Probiere es bitte mal damit:

Code: Select all

TOTALCMD#BAR#DATA
%comspec% /ccopy nul "%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.lua"
 && START "" "%COMMANDER_PATH%\Tools\Notepad++\notepad++.exe" "%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.lua"

totalcmd.exe,21
Textdatei mit Datum erstellen.
.

-1 
Last edited by norfie² on 2017-09-01, 09:05 UTC, edited 1 time in total.
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

norfie² wrote: Nachteil: eine DOS-Box öffnet sich und bleibt bis zum Schliessen von Notepad++ geöffnet. :|
Verwende dazu START

START "" "...notepad++.exe" "Datei"





 
Post Reply