
Vytvoření zástupců do adresářových složek
Čau,
pomocí Robocopy jsem vytvořil adresářovou struktůru. Nyní potřebuju do těch adresářů zkopírovat zástupce souborů, hromadně samo. Jak na to?
Čau,
pomocí Robocopy jsem vytvořil adresářovou struktůru. Nyní potřebuju do těch adresářů zkopírovat zástupce souborů, hromadně samo. Jak na to?
Zpět do poradny Odpovědět na původní otázku Nahoru
Dotazu nerozumím, ale zástupci mají příponu lnk. Takže programu řekni, že chceš zkopírovat všechny *.lnk.
1) kterých souborů to mají být zástupci = zdroj?
2) kde mají ležet?
1) Ano, složka se soubory, cíl složka se zástupci (složka není zástupce)
2) Ve zdroji > cíl má být v těch složkách (co nejsou zástupci)
Zástupce si budeš muset vytvářet, ty nijak nezkopíruješ, protože je nemáš.
Můžeš použít třeba PowerShell, projít zdrojové složky a následně v cyklu vytvářet zástupce.
Nebo složku po složce, označit soubory a přes pravou myš nechat vytvořit zástupce
Osobně nechápu smysl takového počinu. Kdo a jak bude udržovat zástupce, když se změní obsah zdrojových složek?
Z jakého důvodu se to dělalo?
Hmm, takže práce s programováním až do důchodu... To už znám z VB6, "For each files in folder", to bych mohl naprogramovat rovnou celej explorer.
Jinak ten zástupce se přece nemění na základě změny souboru.
Čteš příspěvky ??? "Nebo složku po složce, označit soubory a přes pravou myš nechat vytvořit zástupce"
Kolik těch složek je ??? Kdyby 100, za hodinu je to hotové úplně bez programování
Pokud umíš vbs skript, lehká inspirace (třeba se ti vyplatí si to naprogramovat).
Rem Skript pro generaci novych Alb zastupcu.
Rem Postupne se projdou vsechny podadresare ve zdrojovem adresari.
Rem Pro kazdy podadresar se zalozi stejnojmenny podadresar v cilovem adresari.
Rem Pro kazdeho zastupce ve zdrojovem podadresari se v cilovem podadresari !!! pro každý soubor ve zdrojovem podadresari - nutné upravit !!!
Rem zalozi novy zastupce, ve kterem je zmeneno pismeno disku v odkaze.
Option Explicit
Dim goArgs, goShell, goFileSys, goFhLog
Dim goFldrZ, goFldrC
Dim gAdrParZ, gAdrParC, gPismeno
Const LogName = "AlbaZastupcuNova.log"
Set goArgs = WScript.Arguments
Set goShell = WScript.CreateObject("WScript.shell")
Set goFileSys = WScript.CreateObject("Scripting.FileSystemObject")
ZalozLog LogName
If Not ProchazeniAlb() Then
goFhLog.Writeline "Chyba - vypis nedokoncen"
End If
ZavriLog
Set goArgs = Nothing
Set goShell = Nothing
Set goFileSys = Nothing
Function ProchazeniAlb()
ProchazeniAlb = False
If goArgs.Count = 3 Then
gPismeno = goArgs.Item(0)
gAdrParZ = goArgs.Item(1)
gAdrParC = goArgs.Item(2)
Else
goFhLog.Writeline "Chyba - nejsou zadany adresare a pismeno"
Exit Function
End If
If Not goFileSys.FolderExists(gAdrParZ) Then
goFhLog.Writeline "Chyba - zdrojovy adresar neexistuje " & gAdrParZ
Exit Function
End If
If Not goFileSys.FolderExists(gAdrParC) Then
goFhLog.Writeline "Chyba - cilovy adresar neexistuje " & gAdrParC
Exit Function
End If
If Not ((gPismeno >= "A") And (gPismeno <= "Z")) Then
goFhLog.Writeline "Chyba - pismeno neni spravne " & gPismeno
Exit Function
End If
Set goFldrZ = goFileSys.GetFolder(gAdrParZ)
Set goFldrC = goFileSys.GetFolder(gAdrParC)
If Not Podadresare() Then
goFhLog.Writeline "Chyba - zpracovani podadresaru nedokonceno"
Exit Function
End If
ProchazeniAlb = True
End Function
Function Podadresare()
Dim oFset, oSubf
Dim SubfC
Podadresare = False
Set oFset = goFldrZ.SubFolders
For Each oSubf in oFset
SubfC = gAdrParC & "\" & oSubf.Name
goFileSys.CreateFolder(SubfC)
goFhLog.Writeline "A=" & SubfC
If Not Zastupci(oSubf, SubfC) Then
goFhLog.Writeline "Chyba - zpracovani zastupcu nedokonceno"
Exit Function
End If
Next
Podadresare = True
End Function
Function Zastupci(Byval PodadrZ, PodadrC)
Dim oFold, oFset, oFile
Dim oShellLink
Dim ZastupceZ, ZastupceC, Delka, NovyOdkaz
Zastupci = False
Set oFold = goFileSys.GetFolder(PodadrZ)
Set oFset = oFold.Files
For Each oFile In oFset
ZastupceZ = PodadrZ & "\" & oFile.Name
Set oShellLink = goShell.CreateShortcut(ZastupceZ)
NovyOdkaz = oShellLink.TargetPath
Delka = Len(NovyOdkaz)
NovyOdkaz = Right(oShellLink.TargetPath, Delka - 3)
NovyOdkaz = gPismeno & ":\" & NovyOdkaz
ZastupceC = PodadrC & "\" & oFile.Name
Set oShellLink = goShell.CreateShortcut(ZastupceC)
oShellLink.WindowStyle = 1
oShellLink.Description = ""
oShellLink.TargetPath = NovyOdkaz
oShellLink.Save
goFhLog.Writeline "Z=" & ZastupceC
Next
Zastupci = True
End Function
Sub ZalozLog(LogFile)
Set goFhLog = goFileSys.CreateTextFile(Logfile)
goFhLog.Close
Set goFhLog = goFileSys.OpenTextFile(Logfile, 2)
End Sub
Sub ZavriLog
goFhLog.Close
End Sub
Asi opráším to programování, ale už se mi do toho moc nechce. Dám vědět, díky za podmět.
z resource kitu k windows: https://ss64.com/nt/shortcut.html
To ne, ale kdyz soubor smazes, zastupce zustane.
Kdyz pribude soubor, zastupce bude chybet
Neodpovedel jsi na smysl toho vytvaret kopii nejake struktury pomoci zastupcu
Podle mě je to taky nesmysl, dělat fůru zástupců. Přitom stačí udělat na ploše jen zástupce celých složek, jestli to chce mít rychle přístupné.
Né že smažu soubor, vysunu disk, zástupce zůstane a v danné složce která není zástupce hned vidím cestu k médiu, ve složce je vidět "propojit cil", zopakuji, hned! Mj. zkoušel jsem i "do knihovny"... Tím to kosí vytvořením zástupců ze všeho.
Promiň, cetl jsem to několikrát, ale nepochopil. Holt už stárnu. Zkus to vysvětlit nějak lidsky.
tvůj popis zůstává úspěšně nesrozumitelný. udělám vizualizaci za tebe, napiš nebo nakresli co je podle tebe jinak:
ve volných chvílích můžeš vysvětlit, k čemu to má být dobré.
Jo to je ono, akorát zdroj ADR2 nebude mít stejnou sestu jako ADR2 v cíli, akorát se bude jmenovat stejně.