Desktop aufräumen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Konanocg
Posts: 6
Joined: 13 Mar 2016, 08:10

Desktop aufräumen

13 Mar 2016, 08:24

Hallo erstmal

Ich bin vor 2 tagen zufällig auf Autohotkey aufmerksam geworden habe nach einem Weg gesucht ein Fenster oben zulassen wahrend ich ein anderes öffne es hat mir dabei geholfen obwohl ich 0 programmier Erfahrung habe konnte man schnell zu Ergebnissen kommen.

Jetzt habe ich mich gefragt da ich immer viel Musik auf dem Desktop liegen habe wie ich ein Programm machen könnte das alle Audio datein sammelt und in einen Ordner packt.

Ich würde mich über Hilfe freuen danke im Voraus.
Rohwedder
Posts: 7774
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Desktop aufräumen

13 Mar 2016, 09:08

Hallo,
So z.B.:

Code: Select all

MusikOrdner = C:\MusikOrdner
If !FileExist(MusikOrdner)
	FileCreateDir, %MusikOrdner%
Return
F1::
	FileMove, %A_Desktop%\*.mp3, %MusikOrdner%
Return
Konanocg
Posts: 6
Joined: 13 Mar 2016, 08:10

Re: Desktop aufräumen

13 Mar 2016, 09:50

Danke für deine Hilfe momentan packt das Programm ja nur MP3 datein die lose rumliegen in einen Ordner könnte man es auch machen das alle anderen Ordner die Audio datein enthalten in einen Ordner gepackt werden?
garry
Posts: 3795
Joined: 22 Dec 2013, 12:50

Re: Desktop aufräumen

13 Mar 2016, 16:50

danke Rohwedder,
script unten benutzt im Moment für Test Filecopy , wenn getestet denn mit Filemove ersetzen
erstellt noch ein text-file , da sieht man wo die files lagen falls aus Versehen verschoben wurde
Files mit gleichen Namen erhalten eine fortlaufende Nummer zum Namen
welche Files identisch sind kann man mit filegetsize bzw. im Explorer anschauen und anhören
vielleicht gibt es bessere Lösung damit files mit gleichem Namen nicht überschrieben werden
( hatte mehrere mp3-files mit Namen Test.mp3 welche unterschiedlich waren )

maybe confused ...

Code: Select all

;-------- https://autohotkey.com/boards/viewtopic.php?f=9&t=14907&p=75798#p75798 ---
#NoEnv                            ;- Recommended for performance and compatibility with future AutoHotkey releases.
#Warn
SendMode Input                    ;- Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%
SetBatchLines, -1

Extensions := "mp3,wav,aac,m4a"       ;- files with these extension to move

FD2:=""
FD2 = C:\MusikOrdner
ifnotexist,%FD2%
  FileCreateDir, %FD2%

F1=%A_desktop%\My_Music_Files.txt           ;- for control
ifexist,%f1%
   filedelete,%f1%

e4x:=""
Loop, %a_desktop%\*.*, 0, 1                 ;- recursive search in subfolders also
  {
  If A_LoopFileExt in %Extensions%
    e4x .= A_LoopFileFullPath "`r`n"        ;- write to variable
  }

if e4x<>
  fileappend,%e4x%,%f1%                     ;- for control write fullpath to file
else
  {
  msgbox, 262208,Music-Files ,NO Music-Files found at`n%a_desktop%
  return
  }

i=0
loop,parse,e4x,`n,`r                       ;- read variable
  {
  x=%a_loopfield%
  if x<>
    {
    ;msgbox, 262208,TEST_MoveMusicFiles2%FD2%,FileMove`,%x%`, %FD2% , 1      ;- for test
    ;FileMove,%x%,%FD2%                                                      ;- really file move
    Filecopy,%x%,%FD2%
    if (errorlevel=0)
       {
       i++
       continue
       }
    if errorlevel                                                            ;- if file exist copy file with new name add a_index like Test_4.mp3
         {
         SplitPath, x, name, dir, ext, name_no_ext, drive
         filegetsize,V1,%x%,
         filegetsize,V2,%FD2%\%name%,
         ;msgbox,V1=%v1%`nV2=%v2%
         if (V1=V2)
             {
             ;msgbox, 262208,TEST, NOT Copy`n%V1%=%x%`n%V2%=%FD2%\%name%`nBecause same size
             continue
             }
         i++
         ;xnew=%name_no_ext%_%a_now%_%a_index%.%ext%
         xnew=%name_no_ext%_%a_index%.%ext%
         ;msgbox, 262208,TEST, Copy`n%V1%=%x%>>`n%V2%=%FD2%\%xnew%`nBecause NOT same size
         filecopy,%x%,%FD2%\%xnew%
         }
    }
 }

e4x=
;run,%f1%                     ;- open text-file with fullpath
;sleep,2000
run,%FD2%                    ;- open folder
sleep,2000
msgbox, 262208,TEST_FINISH,Copied ( or moved) =%i%  Music-Files
return

;- break script
esc::exitapp

Konanocg
Posts: 6
Joined: 13 Mar 2016, 08:10

Re: Desktop aufräumen

14 Mar 2016, 01:48

Danke auch dir für deine Hilfe und Zeit

Aber leider macht dass Programm immer noch nicht ganz dass, was ich mir vorstelle, momentan erkennt es die Musik in den Ordnern und kopiert diese lose in MusikOrdner aber wollte ja, dass es die Musik verschiebt und die Musik in einen Ordner packt und wenn möglich auch, dass die Musik in den Ordnern bleibt, in denen es war, weil sonst ist, dass zu unübersichtlich wenn ich einen großen order mit all meiner Musik habe.
garry
Posts: 3795
Joined: 22 Dec 2013, 12:50

Re: Desktop aufräumen

14 Mar 2016, 08:44

probiere dies , und mache denn später Versuche mit Filemove statt Filecopy

Code: Select all

#NoEnv                            ;- Recommended for performance and compatibility with future AutoHotkey releases.
#Warn
SendMode Input                    ;- Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%
SetBatchLines, -1

Extensions := "mp3,wav,aac,m4a"       ;- files with these extension to move

FD2:=""
FD2 = C:\MusikOrdner
ifnotexist,%FD2%
  FileCreateDir, %FD2%

F1=%A_desktop%\My_Music_Files.txt           ;- for control
ifexist,%f1%
   filedelete,%f1%

;------------- search all musicfiles at desktop and copy to FD2 ( C:\MusikOrdner )
pathrmv=%a_desktop%
e4x:=""
Loop, %a_desktop%\*.*, 0, 1                 ;- recursive search in subfolders also
  {
  If A_LoopFileExt in %Extensions%
    e4x .= A_LoopFileFullPath "`r`n"        ;- write to variable
  }

if e4x<>
  fileappend,%e4x%,%f1%                     ;- for control write fullpath to file
else
  {
  msgbox, 262208,Music-Files ,NO Music-Files found at`n%a_desktop%
  return
  }


i=0
loop,parse,e4x,`n,`r                       ;- read variable
  {
  x=%a_loopfield%
  if x<>
    {
    SplitPath, x, name, dir, ext, name_no_ext, drive
    stringreplace,dir2,dir,%pathrmv%,,
    destx=%fd2%%dir2%\%name%
    FolderCrea=%fd2%%dir2%
    ifnotexist,%foldercrea%
       filecreatedir,%foldercrea%
    ;msgbox, 262208,TEST_SHOWFile,%destx%
    Filecopy,%x%,%destx%
    if (errorlevel=0)
       {
       i++
       continue
       }
    if errorlevel
       {
       err:=errorlevel
       if (err=1)
           msgbox, 262208,TEST_ERROR,File=%x%`nALREADY EXISTS`nERRORLEVEL=%err%,2
       else
           msgbox, 262208,TEST_ERROR,ERRORLEVEL=%err%,2
       }

    }
  }

e4x=
;run,%f1%                     ;- open text-file with fullpath from copied files
;sleep,2000
run,%FD2%                    ;- open folder
sleep,2000
msgbox, 262208,TEST_FINISH,Copied ( or moved) =%i%  Music-Files
return

;- break script
esc::exitapp
Konanocg
Posts: 6
Joined: 13 Mar 2016, 08:10

Re: Desktop aufräumen

14 Mar 2016, 12:39

Es Kopiert zwar jetzt alle ordner in MusikOrdner aber laesst die musik auf dem desktop liegen.
garry
Posts: 3795
Joined: 22 Dec 2013, 12:50

Re: Desktop aufräumen

14 Mar 2016, 15:02

wie oben erwähnt , sicherheitshalber FileCopy benutzt
(ersetze lediglich Filecopy mit Filemove )
Als Versuch Lösche Dateien im Ordner C:\Musikordner
falls Musikdateien auf dem Desktop vorhanden sind sollte Meldung kommen Moved %i% Music-Files
kontrolliere C:\Musikordner
beim 2.ten Versuch : No Music-Files found at %desktop%

Probleme könnten wieder kommen wenn Du auf dem Desktop ein xy.mp3 file hast welches schon im gleichnamigen Ziel-Ordner vorhanden ist
( es wird nicht überschrieben , siehe hier wieder evtl filegetsize etc im ersten script )



MOVE
ACHTUNG : Diese Beispiel MOVE MusicFiles von Desktop nach C:\MusikOrdner Subfolders inklusive

Code: Select all

/*
ACHTUNG : Diese Beispiel MOVE MusicFiles von Desktop nach C:\MusikOrdner Subfolders inklusive 
zum Kopieren ersetze FileMove mit FileCopy 
*/



#NoEnv                                ;- Recommended for performance and compatibility with future AutoHotkey releases.
#Warn
#Singleinstance,force
SendMode Input                        ;- Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%
SetBatchLines, -1

Extensions := "mp3,wav,aac,m4a"       ;- files with these extension to copy or move ( maybe add more extensions )

FD2:=""
FD2 = C:\MusikOrdner
ifnotexist,%FD2%
  FileCreateDir, %FD2%

F1=%A_desktop%\My_Music_Files.txt     ;- for control
ifexist,%f1%
   filedelete,%f1%

;cmdx=copied
cmdx=moved

;------------- search all musicfiles at desktop and move to FD2 ( C:\MusikOrdner )
pathrmv=%a_desktop%
e4x:=""
Loop, %a_desktop%\*.*, 0, 1                 ;- recursive search in subfolders also
  {
  If A_LoopFileExt in %Extensions%
    e4x .= A_LoopFileFullPath "`r`n"        ;- write to variable
  }

if e4x<>
  fileappend,%e4x%,%f1%                     ;- for control write fullpath to file
else
  {
  msgbox, 262208,Music-Files ,NO Music-Files found at`n%a_desktop%
  return
  }


i=0
loop,parse,e4x,`n,`r                       ;- read variable
  {
  x=%a_loopfield%
  if x<>
    {
    SplitPath, x, name, dir, ext, name_no_ext, drive
    stringreplace,dir2,dir,%pathrmv%,,
    destx=%fd2%%dir2%\%name%
    FolderCrea=%fd2%%dir2%
    ifnotexist,%foldercrea%
       filecreatedir,%foldercrea%
    ;msgbox, 262208,TEST_SHOWFile,%destx%
    FileMove,%x%,%destx%                             ;-- <<<< MOVE  ( or maybe FileCopy )
    if (errorlevel=0)
       {
       i++
       continue
       }
    if errorlevel
       {
       err:=errorlevel
       if (err=1)
           msgbox, 262208,TEST_ERROR,File=%x%`nALREADY EXISTS`nERRORLEVEL=%err%,2  ;- message if same filename in same dest-folder already exist
       else
           msgbox, 262208,TEST_ERROR,ERRORLEVEL=%err%,2                            ;- other error
       }

    }
  }

e4x=
;run,%f1%                     ;- open text-file with fullpath
;sleep,2000
run,%FD2%                    ;- open folder
sleep,2000
msgbox, 262208,TEST_FINISHED,%cmdx% =%i%  Music-Files
return

;- break script
esc::exitapp
;===============================================================================
Konanocg
Posts: 6
Joined: 13 Mar 2016, 08:10

Re: Desktop aufräumen

14 Mar 2016, 22:29

Danke noch mal das du dir die Zeit nimmst und mir das alles erklärst

Ich habe jetzt noch mal beide Version benutzt und wenn ich FileMove verwende verschiebt es die Musik zwar auf MusikOrdner aber lässt die leeren Ordner auf dem Desktop liegen.
just me
Posts: 9576
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Desktop aufräumen

15 Mar 2016, 02:16

Moin,

zum Löschen von Ordnern dient die Anweisung FileRemoveDir.
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Re: Desktop aufräumen

15 Mar 2016, 05:28

Hallo Konanocg,

eine ähnliche Geschichte findest Du hier:
https://autohotkey.com/boards/viewtopic.php?f=9&t=13267

Alle Codebestandteile sind entsprechend kommentiert, für ein besseres Verständnis!
Greetings Best-Code-in-Use
Konanocg
Posts: 6
Joined: 13 Mar 2016, 08:10

Re: Desktop aufräumen

15 Mar 2016, 15:23

Danke für die Hilfe es funktioniert jetzt so, wie ich mir das vorgestellt habe
garry
Posts: 3795
Joined: 22 Dec 2013, 12:50

Re: Desktop aufräumen

15 Mar 2016, 15:44

danke , hier noch ein Beispiel ( delete empty folders at desktop )

Code: Select all

;- https://autohotkey.com/board/topic/41373-delete-empty-folders/
;- idea from user Murp-e
;- MODIFIED    = 20160315
;- CREATED     = 20160315
;- DESCRIPTION = delete empty folders from desktop but keep the last empty main-folder at desktop 
;------------------------------------------------------------------------------------------------
#NoEnv
#singleinstance,force
#warn
SendMode Input
SetWorkingDir, %A_ScriptDir%

sourcex=%a_desktop%

F11=DeletedEmptyFolders_Log.txt
F12=DeletedEmptyFoldersError_Log.txt

StringSplit,CX,sourcex,`\
c:=(cx0+1)

e1x :=""
errx:=""
deletedFolderCount := 0
deletedErrorCount  := 0

;================= BEGIN =================================
Loop, %sourcex%\*.*, 2, 1
{
 counter := 0
 Loop, %A_LoopFileFullPath%\*.*, 0, 1
    counter++

 if counter = 0
 {
 xxx= %A_LoopFileFullPath%
 StringSplit,CY,xxx,`\
 d:=(cy0+0)
 if (c=d)                              ;- keep folder at desktop also when empty , otherwise remove this
    continue
 FileRemoveDir, %A_LoopFileFullPath%   ;- <<<<<  REMOVE empty folder
;================= END ======================================
 ;-- logfile  & counter ---
 if errorlevel <> 0
   {
   err := errorlevel
   errx .= "error=" . err . "| " . A_LoopFileFullPath . "`r`n"
   deletedErrorCount++
   }
 else
   {
   e1x .= A_LoopFileFullPath . "`r`n"
   deletedFolderCount++
   }
 ;----
 }
}
;-------------------------------------------------------------
Formattime,TS,,longdate
Formattime,TT,T12,time

if e1x<>
   Fileappend,Deleted empty folders from `r`n%sourcex%`r`n`;-------- saved at %TS% %TT% --------------`r`n%e1x%,%f11%

if errx<>
   Fileappend,Errors while deleting from epty folders from`r`n%sourcex%`r`n`;-------- saved at %TS% %TT% --------------`r`n%errx%,%f12%

msgbox, 262208, ,%e1x%`nDeleted %deletedFolderCount% empty folders. (%deletedErrorCount% errors.)
e1x=
errx=
counter=
return

esc::exitapp
;================== END SCRIPT delete empty folders/subfolders =============================================================


Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 32 guests