Stránka 1 z 2

Program pro automatické zkopírování složky z pc na flešku

Napsal: 16 kvě 2013 16:33
od Peťa
Zdravím, potřeboval bych poradit s programem, který by uměl zkopírovat soubor z disku pc na flešku. Představuji si to tak, že flešku připojím k pc, na ní bude program, který spustím a on potřebné soubory z pc zkopíruje na onu flešku. Složka ze které se bude kopírovat, bude předem definovaná. Ideální by bylo, kdyby k tomu program nepotřeboval otevírat žádná okna a prostě to udělal. Nevím, zda by nebyl na toto vhodný nějaký skript.
Poradíte prosím?

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 16:43
od Uziv00
Nadefinuj složku a skript ti můžu napsat. Upozorňuji, že je rozdíl mezi "C:\pokus\" a mezi "D:\Data\pokusy z krílova\atd \"
Dále si nadefinuj, co když na flešce už soubory budou.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 16:47
od faraon
Na to ti stačí dávkový soubor s jedním příkazem, nebo třeba Autorun.inf.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 17:27
od Peťa
ITCrowd bylo by možné měnit cestu k souboru, protože se může stát, že budu potřebovat kopírovat i z jiné složky? Mám Notepad++ a pokud by byla zdrojová cesta vidět po otevření v Notepadu, mohl bych ji před použitím zeditovat. Nyní by se jedno o složku C:\Users\PETR\Documents
Pokud už soubry na flešce budou, tak ke kopírovaní nemusí dojít. Ještě dodám, že by bylo dobré, aby to fungovalo pod Vistou i win 7.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 18:11
od Uziv00
1. Ta složka documnets je vlastně složka, kterou vidíš když poklepeš na dokumenty?
2. Uživatel PETR je na obou počítačích?
3. Kopírovat se budou jen soubory, nebo i adresáře?
4. Jestliže soubory, pak všechny, nebo jen nějakého typu?
5. Má se třeba kontrolovat datum vytvoření při kopírování (tedy že by se starý soubor na flashce přepsal novým)?
7. Je žádoucí využít systémové proměnné?
8. Jak bude vyřešen přístup ke složce v případě přihlášení jiného uživatele?
9. Jaký bude vytvářený adresář na flashce?
ad7: lze použít systémovou složku Documents. V tom případě skript bude kopírovat složku Documents aktuálně přihlášeného uživatele.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 18:23
od Peťa
1. ano
2. no je pravda, že uživatele PETR mám jen na svém osobním notebooku a když bych chtěl kopírovat i z dalšího, bylo by potřeba mít možnost to změnit
3. i adresáře
4. kdyby to šlo, tak aby to umělo všechny
5. ne
7. nevím o co se jedná a jak to může kopírovaní ovlivnit
8. na všech pc, ze kterých mám v plánu kopírovat, mám jen jednoho uživatele
9. složka s názve třeba Data (na názvu nesejde)
ad7. to by zřejmě zcela stačilo

Díky moc za čas, který tomu věnuješ :smile:

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 21:30
od Uziv00
takže:
1. Skript využívá proměnné %userprofile% pro zjištění cesty k Documents. Tím je zajištěno, že zkopíruje vždy složku Documents aktuálně přihlášeného uživatele.
2. Skript si zjistí, ze kterého disku je spouštěn a na tomto disku vytvoří adresář a nahraje data.
3. Adresář je flashdisk:\DATA\UserName. Pokud neexistuje, tak si ho vytvoří.
4. Vytvoří dosovský příkaz, který spustí.
5. Předpokládá se, že bude vždy spouštěn z Flashdisku (je jedno, zda z kořenového, či jiného adresáře)
6. Zdrojová i cílová složka lze ručně měnit přepisem kódu (proměnné Zdroj a Cíl)
7. Bude fungovat na Windows7 a na Vista. Na XP ne, ty používají jiný název Documents. Na Windows8 nemám možnost vyzkoušet.

Kód: Vybrat vše

'***********************************************************
'*   Script kopíruje všechny soubory a složky z Dokumenty  *
'*   Vytváří si cílový adresář na FlashDisku               *
'*********************************************************** 
'*            Vytvořeno pro PC-HELP                        *
'*                Etienn@Script                            *
'***********************************************************
Option Explicit
Dim disk, Zdroj, Dt, Cil, prikaz, Jmeno
Dim WshShell, objNetwork, fso

' zjisteni písmena disku scriptu
disk = WScript.ScriptFullName
disk = Left(disk, 3)
'WScript.Echo disk

' Načtení složky Documents
Set WshShell = WScript.CreateObject("WScript.Shell")
Zdroj = wshShell.ExpandEnvironmentStrings( "%userprofile%" )
Zdroj = Zdroj & "\Documents" 'Zdrojová složka
'WScript.Echo Zdroj

' Načtení jména uživatele
Set objNetwork = CreateObject ("WScript.Network")
Jmeno = objNetwork.UserName
Dt = disk & "DATA\"
Cil = disk & "DATA\" & Jmeno 'Cílová složka
'WScript.Echo Cil

' Vytvoření adresáře na flashce
Set fso = CreateObject("Scripting.FileSystemObject")
If (Not fso.FolderExists(Dt)) Then fso.CreateFolder(Dt)
If (Not fso.FolderExists(Cil)) Then fso.CreateFolder(Cil)

' vytvoření a spuštění kopírování
If InStr(Cil, Chr(32)) Then
prikaz = "xcopy " & Chr(34) & Zdroj & Chr(34) & Chr(32) & Chr(34) & Cil & Chr(34) & Chr(32) & "/e /v"
Else
prikaz = "xcopy " & Chr(34) & Zdroj & Chr(34) & Chr(32) & Cil & Chr(32) & "/e /v"
End If
'WScript.Echo prikaz
WshShell.Run prikaz

Set WshShell = Nothing
Set objNetwork = Nothing
Set objNetwork = Nothing
Set fso = Nothing

tento kód si zkopíruj do notepadu !NE do Wordu nebo jiného editoru! soubor ulož a změň jeho příponu na .vbs. Spustíš jej poklepáním.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 21:44
od Peťa
Díky moc :bigups: :smile: zítra ještě zkusím změnit složku, ze které se to bude kopírovat, abych vyzkoušel, jestli to zvládnu tak, abych skrip nepodrbal.
Ještě bych měl dotaz. Ten příkazový řádek, co se otevře po spuštění skriptu je nezbytný, nebo by to šlo udělat, tak aby nebyl vidět? Je to jen kosmetická záležitost.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 22:07
od Uziv00
Jistě že lze. V tom případě ale skript již existující soubory natvrdo přepíše.
Změň si spouštěcí část skriptu takto:

Kód: Vybrat vše

' vytvoření a spuštění kopírování
If InStr(Cil, Chr(32)) Then
prikaz = "%comspec% /c xcopy " & Chr(34) & Zdroj & Chr(34) & Chr(32) & Chr(34) & Cil & Chr(34) & Chr(32) & "/e /y"
Else
prikaz = "%comspec% /c xcopy " & Chr(34) & Zdroj & Chr(34) & Chr(32) & Cil & Chr(32) & "/e /y"
End If
'WScript.Echo prikaz
WshShell.Run prikaz, 0, True
MsgBox "Soubory byly zkopírovány" , vbOKOnly + vbInformation, "INFO"

Přidal jsem tam řádek MsgBox, který oznamuje ukončení skriptu. Pokud ho tam nechceš, tak jej klidně smaž, nebo ho můžeš "zaremovat" napsáním apostrofu před příkaz.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 22:38
od Peťa
Perfektní :)

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 16 kvě 2013 22:40
od Uziv00
Tak ať ti to slouží ku prospěchu. Až si budeš jistý, že je vše jak potřebuješ, označ téma za vyřešené.

Re: Program pro automatické zkopírování složky z pc na flešk

Napsal: 17 kvě 2013 15:07
od Peťa
Ještě mě něco napadlo. Pokud bych chtěl kopírovat opačně, tzn. z flešky do pc, tak stačí jen pozměnit zdrojovou a cílovou složku, nebo je to složitější? Napadá mě problém, že každý pc může přidělit flešce přece jiné písmeno k jejímu označení.