Code: Select all
SendInput, +{LButton}
Code: Select all
#Lbutton::
+LButton
Code: Select all
#Lbutton::+LButton
Moderator: jNizM
Code: Select all
SendInput, +{LButton}
Code: Select all
#Lbutton::
+LButton
Code: Select all
#Lbutton::+LButton
Code: Select all
StrReplace(DateienAuswahl , "`n", "`n", DateienAnzahl) ; <<<<<< zählt die Anzahl der Zeilenvorschübe in der Variablen DateienAnzahl
Code: Select all
==> Call to nonexistent function.
Specifically: StrReplace(DateienAuswahl , "
", "
", DateienAnzahl)
>Exit code: 2 Time: 0.6663
Code: Select all
Loop, Parse, BilderAuswahl, `n, `r
{
SplitPath, A_LoopField, , Verzeichnis, Erweiterung, LetzteNummer
LetzterIndex := SubStr("000" . LetzterIndex, -2) ; Setzt Index auf 1 in 2 Ziffern
LetzteNummer = %AktSign%_%LetzteSign%-%LetzterIndex%
LetzterIndex := ++LetzterIndex
FileMove, %A_LoopField%, %Verzeichnis%\%LetzteNummer%.%Erweiterung%
}
return
Das wäre auch Möglichkeit für das in meinem letzten Post beschriebene Problem.just me wrote: ich hätte da noch eine recht simple Idee. Wenn Du immer 'von oben nach unten' markierst, könntest Du Dir den Namen der zuerst markierten Datei über einen Hotkey holen. Die könntest Du dann immer als erste Datei umbenennen und anschließend in der Liste übergehen.
Das Umbenennen-Tool hatte ich seitdem immer wieder etwas verbessert, insbesondere durch Deinen Tip mit dem StrReplace. Was aber allen diesen Versuchen gemeinsam ist, ist die Vorgehensweise beim Umbenennen: Angefangen von der ersten Datei, die dazu erst einzeln (!) angesteuert und markiert werden muß, nachdem zuvor alle zusammen markiert wurden, werden alle weiteren nacheinander durch eine Schleife abgearbeitet, wobei der Zeiger mit Tab jeweils zur nächsten springt und die Schleife bei der durch die mit StrReplace herausgefundene Dateienzahl abschließt. Danach springt der Zeiger nochmals einen Schritt weiter, damit man gleich bei der nächsten Datei weitermachen kann.Meister Lampe wrote:Ja, genau. Diese Bilder stammen aus einem Scanvorgang und sind dort in einem Standardschema benannt worden (z.B. img001, img002, ...). Aber die Reihenfolge ist schon so, wie ich sie benötige.just me wrote:Moin,
Du meinst wohl Mehrere markierte Dateien behandeln.
Ich verstehe immer noch nicht, wie Du das Problem mit der Reihenfolge über die Bestimmung der Anzahl lösen willst. Markierst Du die Dateien in einem Explorerfenster?
Wenn ich sie umbenne, dann müssen sie zu einzelnen Einheiten zusammengefaßt werden: Z.B. Nr.001_01..Nr.001_10, Nr.002_01..Nr.002_07, ...
Zu diesem Zweck habe ich mir bereits ein für meine Bedürfnisse ganz zufriedenstellendes AHK-Script entworfen. Wenn ich im Umbennenmodus statt den neuen Namen einer Datei den ersten Zählparameter x, dan Komma und dann den zweiten y eingebe, so werden alle darauffolgenden nach dem Schema Nr. x_1 - Nr.x_y benannt. Nur dazu muß ich auch den Parameter y wissen. Statt immer abzuzählen oder zu makieren und Eigenschaften aufzurufen, möchte ich diesen Arbeitsgang mit einbauen.
Viele Grüße von Meister Lampe
Eigentlich ist der Rest des Programms ja fertig und soweit möglich auch getestet.just me wrote:
ich hätte da noch eine recht simple Idee. Wenn Du immer 'von oben nach unten' markierst, könntest Du Dir den Namen der zuerst markierten Datei über einen Hotkey holen. Die könntest Du dann immer als erste Datei umbenennen und anschließend in der Liste übergehen.
Code: Select all
AktSign := "X 12--3"
Code: Select all
!LButton::
SendInput, +{LButton}
Clipboard := ""
SendInput, ^c
Clipwait, 1
If ErrorLevel ; abbrechen, wenn keine Dateien im Clipboard
{
MsgBox, Sie müssen mindestens eine Datei markieren!
return
}
else
BilderAuswahl := Clipboard
StrReplace(BilderAuswahl , "`n", "`n", BilderAnzahl) ; zählt die Anzahl der Zeilenvorschübe in der Variablen BilderAnzahl
VorschauAnzahl := BilderAnzahl +1
LetzteSign := SubStr("0000" . ++LetzteSign, -3) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
InputBox, BoxSign, Vorschau, "Es werden %VorschauAnzahl% Bilder umsigniert", , 225, 125, , , , ,%LetzteSign%
If ErrorLevel
{
LetzteSign := LetzteSign -1
return
}
else
IfNotInString, BoxSign, , ; Prüft, ob ein anderer Startidex durch Komma getrennt eingegeben wurde
{
LetzteSign := SubStr("0000" . BoxSign, -3) ; Setzt eine neu gewählte Signatur auf 4 Ziffern
LetzterIndex := 0 ; Setzt Index auf 0
}
else
{
StringSplit, BoxArray, BoxSign, `,
If (BoxArray1 = "")
{
LetzteSign := SubStr("0000" . ++LetzteSign, -3) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
}
else
LetzteSign := SubStr("0000" . BoxArray1, -3) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := BoxArray2
}
return
Code: Select all
NumpadAdd::
Send, {F2}
ParamIndex := VorschauAnzahl
Clipboard := ""
SendInput, ^c
Clipwait, 1
GanzerName := Clipboard
SplitPath, GanzerName, , , Erweiterung
Loop , %ParamIndex%
{
LetzterIndex := SubStr("000" . LetzterIndex, -2) ; Setzt Index auf 1 in 2 Ziffern
LetzteNummer = %AktSign%_%LetzteSign%-%LetzterIndex%%Erweiterung%
Send, %LetzteNummer%
LetzterIndex := ++LetzterIndex
Send, {Tab}{F2}
}
return
Code: Select all
#NoEnv
Sendmode, Input
SetBatchLines, -1
ShellApp := ComObjCreate("Shell.Application")
AktSign := "X 12--3"
Auswahl := []
LetzteDatei := ""
LetzteSign := 0
Return
; --------------------------------------------------------------------------------------------------
#IfWinActive ahk_class CabinetWClass ahk_exe explorer.exe ; Angaben für Win 10
!LButton::
; Explorerfenster bestimmen
ExplorerID := WinExist()
ShellWin := 0
For Win In ShellApp.Windows {
If (Win.HWND = ExplorerID) {
ShellWin := Win
Break
}
}
If !(ShellWin) ; das aktive Explorerfenster wurde nicht gefunden, Abbruch!
Return
; Auswahl nach unten erweitern
Send, +{LButton}
; Auswahl einlesen und bereinigen. Die erste Datei (mit dem Fokus) kommt ans Ende.
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selecteditems
If !(ShellWin.Document.SelectedItems.Count > 0) { ; keine Auswahl
MsgBox, Sie müssen mindestens eine Datei markieren!
Return
}
Auswahl := []
For Item In ShellWin.Document.SelectedItems
Auswahl.Push(Item.Path)
LetzteDatei := Auswahl.RemoveAt(1) ; erste (bzw. letzte) Datei aus dem Array entfernen ...
Auswahl.Push(LetzteDatei) ; ... und wieder anhängen
Anzahl := Auswahl.Length()
; Benutzereingaben zum Umbenennen holen
LetzteSign := Format("{:04}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
InputBox, BoxSign, Vorschau, "Es werden %Anzahl% Bilder umsigniert", , 225, 125, , , , ,%LetzteSign%
If (ErrorLevel) {
LetzteSign--
Return
}
If !InStr(BoxSign, ",") { ; Prüft, ob ein anderer Startindex durch Komma getrennt eingegeben wurde
LetzteSign := Format("{:04}", BoxSign) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := 0 ; Setzt Index auf 0
}
Else {
StringSplit, BoxArray, BoxSign, `,
If (BoxArray1 = "")
LetzteSign := Format("{:04}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
Else
LetzteSign := Format("{:04}", BoxArray1) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := BoxArray2
}
; Dateien umbenennen
For Index, Datei In Auswahl {
SplitPath, Datei, DateiName, , Erweiterung
; Datei selektieren
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selectitem
ShellWin.Document.SelectItem(ShellWin.Document.Folder.ParseName(DateiName), 29)
Send, {F2}
LetzterIndex := Format("{:02}", LetzterIndex) ; Setzt Index auf 1 in 2 Ziffern
LetzteNummer = %AktSign%_%LetzteSign%-%LetzterIndex%%Erweiterung%
ToolTip, %Datei%`n->`n%LetzteNummer%
Sleep, 1000
; Send, %LetzteNummer%
LetzterIndex++
Send, {Tab}{F2}
}
; Fertig
ShellWin := ""
Send, {Esc}
Return
#IfWinActive
; --------------------------------------------------------------------------------------------------
Code: Select all
#NoEnv
Sendmode, Input
SetBatchLines, -1
ShellApp := ComObjCreate("Shell.Application")
AktSign := "X 12--3"
Auswahl := []
LetzteDatei := ""
LetzteSign := 0
Return
; --------------------------------------------------------------------------------------------------
#IfWinActive ahk_class CabinetWClass ahk_exe explorer.exe ; Angaben für Win 10
!LButton::
; Explorerfenster bestimmen
ExplorerID := WinExist()
ShellWin := 0
For Win In ShellApp.Windows {
If (Win.HWND = ExplorerID) {
ShellWin := Win
Break
}
}
If !(ShellWin) ; das aktive Explorerfenster wurde nicht gefunden, Abbruch!
Return
; Auswahl nach unten erweitern
Send, +{LButton}
; Auswahl einlesen und bereinigen. Die erste Datei (mit dem Fokus) kommt ans Ende.
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selecteditems
If !(ShellWin.Document.SelectedItems.Count > 0) { ; keine Auswahl
MsgBox, Sie müssen mindestens eine Datei markieren!
Return
}
Auswahl := []
For Item In ShellWin.Document.SelectedItems
Auswahl.Push(Item.Path)
LetzteDatei := Auswahl.RemoveAt(1) ; erste (bzw. letzte) Datei aus dem Array entfernen ...
Auswahl.Push(LetzteDatei) ; ... und wieder anhängen
Anzahl := Auswahl.Length()
; Benutzereingaben zum Umbenennen holen
LetzteSign := Format("{:04}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
InputBox, BoxSign, Vorschau, "Es werden %Anzahl% Bilder umsigniert", , 225, 125, , , , ,%LetzteSign%
If (ErrorLevel) {
LetzteSign--
Return
}
If !InStr(BoxSign, ",") { ; Prüft, ob ein anderer Startindex durch Komma getrennt eingegeben wurde
LetzteSign := Format("{:04}", BoxSign) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := 0 ; Setzt Index auf 0
}
Else {
StringSplit, BoxArray, BoxSign, `,
If (BoxArray1 = "")
LetzteSign := Format("{:04}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
Else
LetzteSign := Format("{:04}", BoxArray1) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := BoxArray2
}
; Erste Datei selektieren
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selectitem
Datei := Auswahl[1]
SplitPath, Datei, DateiName, , Erweiterung
ShellWin.Document.SelectItem(ShellWin.Document.Folder.ParseName(DateiName), 29)
Sleep, 100
Send, {F2}
; Dateien umbenennen
For Index, Datei In Auswahl {
LetzterIndex := Format("{:02}", LetzterIndex) ; Setzt Index auf 1 in 2 Ziffern
LetzteNummer = %AktSign%_%LetzteSign%-%LetzterIndex%%Erweiterung%
; ToolTip, %Datei%`n->`n%LetzteNummer%
; Sleep, 1000
Send, %LetzteNummer%
LetzterIndex++
Send, {Tab}{F2}
}
; Fertig
ShellWin := ""
Send, {Esc}
Return
#IfWinActive
; --------------------------------------------------------------------------------------------------
Code: Select all
#NoEnv
Sendmode, Input
SetBatchLines, -1
ShellApp := ComObjCreate("Shell.Application")
AktSign := "X 12--3"
Auswahl := []
LetzteDatei := ""
LetzteSign := 0
Return
; --------------------------------------------------------------------------------------------------
#IfWinActive ahk_class CabinetWClass ahk_exe explorer.exe ; Angaben für Win 10
!LButton::
; Explorerfenster bestimmen
ExplorerID := WinExist()
ShellWin := 0
For Win In ShellApp.Windows {
If (Win.HWND = ExplorerID) {
ShellWin := Win
Break
}
}
If !(ShellWin) ; das aktive Explorerfenster wurde nicht gefunden, Abbruch!
Return
; Auswahl nach unten erweitern
Send, +{LButton}
; Auswahl einlesen und bereinigen. Die erste Datei (mit dem Fokus) kommt ans Ende.
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selecteditems
If !(ShellWin.Document.SelectedItems.Count > 0) { ; keine Auswahl
MsgBox, Sie müssen mindestens eine Datei markieren!
Return
}
SelectedItems := []
For Item In ShellWin.Document.SelectedItems
SelectedItems.Push(Item)
LetzteDatei := SelectedItems.RemoveAt(1) ; erste (bzw. letzte) Datei aus dem Array entfernen ...
SelectedItems.Push(LetzteDatei) ; ... und wieder anhängen
Anzahl := SelectedItems.Length()
; Benutzereingaben zum Umbenennen holen
LetzteSign := Format("{:04}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
InputBox, BoxSign, Vorschau, "Es werden %Anzahl% Bilder umsigniert", , 225, 125, , , , ,%LetzteSign%
If (ErrorLevel) {
LetzteSign--
Return
}
If !InStr(BoxSign, ",") { ; Prüft, ob ein anderer Startindex durch Komma getrennt eingegeben wurde
LetzteSign := Format("{:04}", BoxSign) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := 0 ; Setzt Index auf 0
}
Else {
StringSplit, BoxArray, BoxSign, `,
If (BoxArray1 = "")
LetzteSign := Format("{:04}", ++LetzteSign) ; Erhöht die letzte Signatur um 1 und setzt sie auf 4 Ziffern
Else
LetzteSign := Format("{:04}", BoxArray1) ; Setzt neue Signatur auf 4 Ziffern
LetzterIndex := BoxArray2
}
; Dateien umbenennen
ShellWin.Document.SelectItem(SelectedItems[1], 4)
For Index, Item In SelectedItems {
ItemPath := Item.Path
SplitPath, ItemPath, DateiName, , Erweiterung
LetzterIndex := Format("{:02}", LetzterIndex) ; Setzt Index auf 1 in 2 Ziffern
Item.Name := AktSign . "_" . LetzteSign . "-" . LetzterIndex . "." Erweiterung
LetzterIndex++
}
; Fertig
; Letzte Datei selektieren
; -> docs.microsoft.com/en-us/windows/desktop/shell/shellfolderview-selectitem
ShellWin.Document.SelectItem(SelectedItems[Anzahl], 29)
For Index, Item In SelectedItems
Item := ""
ShellWin := ""
Return
#IfWinActive
; --------------------------------------------------------------------------------------------------
Users browsing this forum: No registered users and 30 guests