Zopakování série prikazuuu

Moderated forum for Slovak and Czech users

Moderators: Darkman_, Hacker

Post Reply
Terka
Senior Member
Senior Member
Posts: 298
Joined: 2006-05-24, 09:04 UTC

Zopakování série prikazuuu

Post by *Terka » 2014-02-27, 16:17 UTC

Mám 2 disky, jeden jako záložní.
Na prvním disku pracuji se soubory, přesouvám do jiných adresářů (v rámci pouze jednoho disku), mažu atd. To samé chci provést na záložním disku a ideálně rychle.
Zkoušel někdo něco v tomto duchu?
Moje idea je využít tclog...

User avatar
Hacker
Moderator
Moderator
Posts: 10962
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker » 2014-02-27, 21:07 UTC

Ahoj Terka :)
No, ako prve mi napadlo Synchronize dirs s moznostou Asynchronous, ale tvoj napad tiez nie je zly, len zautomatizovat to cele nie je momentalne mozne, by si sa musela asi zasa raz vrhnut na AHK.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.

ja
Junior Member
Junior Member
Posts: 22
Joined: 2014-04-05, 14:56 UTC

Post by *ja » 2014-04-06, 07:34 UTC

Ako píše Hacker, riešením je synchronize dirs (asynchrónne). Výsledok dostaneš rovnaký, akurát synchronize dirs nevykonáva zmeny postupne podľa logu, ale iba zladí výsledný stav diskov. Spôsob ale nie je dôležitý, dôležitý je výsledok a ten je rovnaký. Čím by bolo opakovanie úkonov lepšie?

Je otázne, či log obsahuje naozaj všetky zmeny a čo napr. s úkonmi, ktoré vykonáš s dočasne pripojenými mechanikami, ktoré v momente vykonávania zmien z logu by pripojené neboli (a ešte horšie, ak by boli). Alebo ak nejaké procesy v systéme zmenia súbory (čo je mimo tc), prípadne iné záludnosti. Nevyzerá to spoľahlivo :)

Terka
Senior Member
Senior Member
Posts: 298
Joined: 2006-05-24, 09:04 UTC

Post by *Terka » 2015-04-25, 09:47 UTC

Rozdil je v rychlosti. Pokud presunu film do jineho adresare, tak to trva sekundu, pri mazani a kopirovani to trva minutu.

User avatar
Hacker
Moderator
Moderator
Posts: 10962
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker » 2015-04-25, 11:26 UTC

Terka,
Ak vyfiltrujes TC log, tak ho mozes predhodit tomuto skriptu - najde vsetky move operacie a vykona ich so subormi v rovnakych adresaroch na NewDriveLetter.

Code: Select all

NewDriveLetter = D
FileRead, TcLog, totalcmd.log
Loop, Parse, TcLog, `n, `r
	If (RegExMatch(A_LoopField, ".+?: Move: [a-zA-Z](.+?) -> [a-zA-Z](.+)", FilePath))
	{
		MsgBox, %A_LoopField%`n%NewDriveLetter%%FilePath1%`n%NewDriveLetter%%FilePath2%
;		FileMove, %NewDriveLetter%%FilePath1%, %NewDriveLetter%%FilePath2%
	}
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.

Terka
Senior Member
Senior Member
Posts: 298
Joined: 2006-05-24, 09:04 UTC

Post by *Terka » 2015-04-25, 12:11 UTC

:)
diky, zkusim.


Delam to momentalne trochu jinak, bez logu. Porovnavam soubory v source a destination
a pokud jsou stejne ale jinde ulozene, tak davam move. Je to ale pomale protoze porovnava skoro S krat D souboru.

Code: Select all

              ;kopirovani adr. struktury source -> destination
                                   ;- 2 = loop jen pres adresare
                    loop, i:\*.* , 2 , 1
                    {
                      NewDir := RegExReplace(A_LoopFileFullPath, "i(.+)", "j$1")  ;- nahrazeni i:\ za j:\
                      FileCreateDir, %NewDir%
                    }

                                                      ; Loop, FilePattern [, IncludeFolders?, Recurse?]
                                                      ; loop, i:\*.*      , 0/1/2 ,              1
                                                      ; 0 Files only
                                                      ; 1 BOTH Files and Folders
                                                      ; 2 Folders only
              ;vytvor sorted seznamy pro oba adresare
                  ;seznam1
                      inputPath:="i:\*.*"
                      seznam1:="c:\seznam1.txt"
                            FileDelete %seznam1%
                      f__z_cesty__serazeny_Seznam_souboru( inputPath, seznam1)

                  ;seznam2
                      inputPath:="j:\*.*"
                      seznam2:="c:\seznam2.txt"
                            FileDelete %seznam2%
                      f__z_cesty__serazeny_Seznam_souboru( inputPath, seznam2)

                    ;fce k vytvoreni seznamu
                                            f__z_cesty__serazeny_Seznam_souboru( inputPath, outputFile)
                                                  {
                                                          file=outputFile ;pro lepsi citelnost

                                                          ;vytvor seznam
                                                              ;- Loop, FilePattern [, IncludeFolders?, Recurse?]
                                                              loop, %inputPath% , 0 , 1
                                                              {
                                                                                              ;- TimeCreated nechodilo
                                                                FileAppend, %A_LoopFileName%%A_LoopFileTimeModified%%A_LoopFileSize%|%A_LoopFileFullPath% `n, %file%
                                                              }

                                                          ; sort seznam
                                                              FileRead, Contents, %file%
                                                              if not ErrorLevel  ; Successfully loaded.
                                                              {
                                                                  Sort, Contents, C  ;case sensitive
                                                                  FileDelete, %file%
                                                                  FileAppend, %Contents%, %outputFile%
                                                                  Contents =  ; Free the memory.
                                                              }
                                                  }
                    ;fce k vytvoreni seznamu konec

              ;seznamy oddeleny "|" (dva sloupce) - example: (2.a 4 radek budou kopirovane)
                          ;-       ___seznam1:___                                                                ___seznam2:___
                          ;- index.php201410200857464782|i:\index.php                                 index.php201410200857464782|j:\index.php
                          ;- project.properties20140815152635141|i:\root\project.properties           project.properties20140815152635141|j:\project.properties
                          ;- project.xml20140815152635322|i:\root\project.xml                         project.xml20140815152635322|j:\root\project.xml
                          ;- soubor.ke.kopirovani.txt201410201105378|i:\soubor.ke.kopirovani.txt      soubor.ke.kopirovani.txt201410201105378|j:\root\soubor.ke.kopirovani.txt


              ;porovnej 1. sloupce seznamů, pokud jsou stejné (stejné soubory) tak přesouvej
              ;přesouvej z             disk j:(SEZNAM2-SLOUPEC2)  do        disk j:(SEZNAM1-SLOUPEC2)

                      Loop, read, %seznam1%
                      {
                        i=%A_LoopReadLine%


                            Loop, read, %seznam2%
                            {
                              j=%A_LoopReadLine%
                              ;- v i je Source, v j je Destination
                              ; roztrhej i
                              ; roztrhej j
                              StringSplit, poleS, i,|
                              StringSplit, poleD, j,|
                                  if ( poleS1 = poleD1) { ;kdyz jde o stejne soubory
                                    Source = %poleD2%
                                    Dest:= RegExReplace(poleS2, ".(.+)", "j$1")  ; poleS2 ale s jinym diskem - nahrad i za j
                                    FileMove, %Source%, %Dest%, 0  ;-(1 = overwrite)
                                    ;pridej: odstran zaznam ??
                                    break ;pridano 2015-04-25
                                  }
                            }
                      }
                    FileAppend, Another line.`n, C:\F12end.txt
                    msgbox hotovo
Return

Post Reply