Skriptování přesunu souborů ve Windows

TomBA

Skriptování přesunu souborů ve Windows
« kdy: 26. 01. 2015, 15:05:28 »
Zdravim.
Dlhšie som nerobil nič skriptami vo windows a tak ma prekvapilo, keď neviem urobiť ani nasledovnu jednoduchu vec.
Potrebujem premiestniť niekoľko tisíc súborov podľa udajov v subore file.txt s asi takouto strukturou:

C:\subory\subor1.jpeg c:\premiestnene_subory\specificky_adresar\novemeno_pre_subor1.jpeg
C:\subory\subor2.jpeg c:\premiestnene_subory\iny_adresar\novemeno_pre_subor2.jpeg
C:\subory\subor3.jpeg c:\premiestnene_subory\adresar1\novemeno_pre_subor3.jpeg
C:\subory\subor4.jpeg c:\premiestnene_subory\adresarXZ\novemeno_pre_subor4.jpeg
.....
......
C:\subory\subor2750.jpeg c:\premiestnene_subory\adresar_celkom_iny\novemeno_pre_subor2750.jpeg

v podstate by som potreboval urobit nieco ako
move %1 %2
kde by som si nacitaval riadok po riadku vysie uvedeny subor.
Ako to ale urobiť vo windows 7?
Nemožem tam inštalovať perl ani python a v cmd či powershell to spraviť neviem.
Poradi niekto?
« Poslední změna: 26. 01. 2015, 16:08:37 od Petr Krčmář »


nobody

Re:Windows scripting
« Odpověď #1 kdy: 26. 01. 2015, 15:28:13 »
ve w7 ? pomoci unetbootin vytvoris liveusb s linuxem, das startmenu restartovat, vyberes boot z usb a:

while read radek; do mv $radek; done <file.txt
;)

Bořek Šikula

Re:Windows scripting
« Odpověď #2 kdy: 26. 01. 2015, 15:58:25 »
Asi to není to správné místo na dotaz, ale nejjednodušší ve W7 (nebo XP nebo W2000 a možná i NT4, kdo ví, a taky W8, 8.1 i W10) bude cmd - příkaz for, for /? vypíše (s dalším vysvětlením) i tuto variantu:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

Bude to dokonce o trochu jednodušší, než boot Linuxu :-)

Re:Windows scripting
« Odpověď #3 kdy: 26. 01. 2015, 16:03:11 »
Naposledy jsem to resil tak, ze jsem si ten soubor copypastnul v putty na vzdaleny linux a tam ve vimku z nej vygeneroval .bat ;)

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Windows scripting
« Odpověď #4 kdy: 26. 01. 2015, 16:05:13 »
Otevri ten soubor v textovem editoru, veskere vyskyty C:\ nahrad mv C:\ za predpokladu, ze budes nahrazovat jen C:\ a ne c:\ a ze to mas v celem souboru stejne. Tez za predpokladu, ze mv je widlacky prikaz k presunu souboru - ja to uz leta nepouzil, tak nevim, jak mi pamet slouzi. Zasejvuj jako nejakejmeno.bat, spust a jdi na kafe.


TomBA

Re:Windows scripting
« Odpověď #5 kdy: 26. 01. 2015, 16:55:16 »
ve w7 ? pomoci unetbootin vytvoris liveusb s linuxem, das startmenu restartovat, vyberes boot z usb a:

while read radek; do mv $radek; done <file.txt
;)
Boot z USB nehrozí....

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
Toto je to čo potrebujem.....

Otevri ten soubor v textovem editoru, veskere vyskyty C:\ nahrad mv C:\ za predpokladu, ze budes nahrazovat jen C:\ a ne c:\ a ze to mas v celem souboru stejne. Tez za predpokladu, ze mv je widlacky prikaz k presunu souboru - ja to uz leta nepouzil, tak nevim, jak mi pamet slouzi. Zasejvuj jako nejakejmeno.bat, spust a jdi na kafe.
Jednoduché riešenie so "sedliackym rozumom". Že mi to nenapadlo  ;D.... Tých C: a D: a F: je tam síce viac, ale za 10min to dám. Akurát to nemá žiadnu kontrolu chýb a tak ak to niekde prdne, nebudem vedieť kde.... Ale asi to takto spravím.

nobody

Re:Windows scripting
« Odpověď #6 kdy: 26. 01. 2015, 17:36:38 »
while read radek; do mv $radek; done <file.txt
Boot z USB nehrozí....

boot z CD ? virtualbox a boot z ISO ? proste rekni rovnou ze na linux foru hledas reseni windows problemu bez pouziti linuxu ;)

jjeenndda

Re:Skriptování přesunu souborů ve Windows
« Odpověď #7 kdy: 26. 01. 2015, 18:51:55 »
A pak WIN mají powershell. V tom jdou "zázraky".

j

Re:Skriptování přesunu souborů ve Windows
« Odpověď #8 kdy: 26. 01. 2015, 20:56:34 »
Tak prvni po precteni me napadlo ctrl + h
A pak ze nekdo navrhne powershell ... ;D

Jinak neco jako ^[a-zA-Z]: a to bych nahrazoval => asi tak 30s?

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Skriptování přesunu souborů ve Windows
« Odpověď #9 kdy: 26. 01. 2015, 21:16:35 »
Jinak tu porad jeste mame Cygwin, ze....

Re:Windows scripting
« Odpověď #10 kdy: 27. 01. 2015, 01:15:32 »
Otevri ten soubor v textovem editoru, veskere vyskyty C:\ nahrad mv C:\ za predpokladu, ze budes nahrazovat jen C:\ a ne c:\ a ze to mas v celem souboru stejne. Tez za predpokladu, ze mv je widlacky prikaz k presunu souboru - ja to uz leta nepouzil, tak nevim, jak mi pamet slouzi. Zasejvuj jako nejakejmeno.bat, spust a jdi na kafe.

Nektere editory umi escape sekvence, takze by stacilo nahrazovat "\n" -> "\n move " (a na prvni radek to dopsat rucne).
Nebo v XEmacsu pro widle vyloopovat makro, ktery to tam dopise :P

Lol Phirae

Re:Skriptování přesunu souborů ve Windows
« Odpověď #11 kdy: 27. 01. 2015, 01:25:11 »
Počkej až sem přijde Lael. Ten ti poradí, ať si koupíš Office 2013 a napíšeš si na to program v Excelu.  ;D

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Windows scripting
« Odpověď #12 kdy: 27. 01. 2015, 02:37:20 »
Nektere editory umi escape sekvence, takze by stacilo nahrazovat "\n" -> "\n move " (a na prvni radek to dopsat rucne).

Pravda. Nevim, jestli to umi Notepad ve Widlich, ale tusim se da oblafnout tak, ze se oselektuje konec radku a pak copy and paste do nahrazovaciho dialogu. Tam se to zobrazi jako nejaky podivny necitelny znak, ale to je jedno.

Juro

Re:Skriptování přesunu souborů ve Windows
« Odpověď #13 kdy: 27. 01. 2015, 05:25:19 »
Ukecanejsia verzia:
Get-Content file.txt | ForEach-Object{ $line=$_.Split(" "); Copy-Item  $line[0] $line[1]}

skratena:
gc file.txt | %{ $line=$_.split(" ");cp  $line[0] $line[1]}

jjeennddaa

Re:Skriptování přesunu souborů ve Windows
« Odpověď #14 kdy: 27. 01. 2015, 08:11:14 »
Jinak tu porad jeste mame Cygwin, ze....
Ano, ale ten musíme instalovat a ne vždy to lze.