Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Vytvoření duplicitních souborů podle určitého pravidla

potřeboval bych pomoc, vytvořit skript, který by dělal následující:
Mám soubor

file.pdf

a potřeboval bych aby ten skript z file.pdf vytvořil následující varianty souborů.(Jako ze by ho zduplikoval a přejmenoval?!)
file_cz.pdf
file_de.pdf
file_es.pdf
file_fr.pdf
file_gb.pdf
file_hu.pdf
file_it.pdf
file_nl.pdf
file_pl.pdf
file_ro.pdf
file_ru.pdf
file_sk.pdf
file_sv.pdf

Tohle me ceka asi u 500 souboru, proto bych rad nejaky skript prosim.
Delat to rucne je strasna pakarna, nevedel by nekdo jak na to?

Předmět Autor Datum
A čo máš k dispozícií? Máš niečo z toho? - node.js - C# - bash
Peter Širka 07.08.2013 10:14
Peter Širka
idealni by byl bud davkovy soubor nebo vbs skript :-/
Milan8 07.08.2013 10:15
Milan8
Tak práve toto neovládam. Určite sa niekto nájde.
Peter Širka 07.08.2013 10:18
Peter Širka
#ruby require "fileutils" files=["p.txt"] # seznam si snad dokazes ziskat variants=%W(ko nd om) file…
Lízard 2 07.08.2013 10:26
Lízard 2
děkuju, zapomněl jsem na jednu zásadní věc, file = je nějaké číslo, které bude pokaždé jiné
Milan8 07.08.2013 10:49
Milan8
tady máš 80% řešení: http://pc.poradna.net/q/view/43896-soft-na-hromadn e-prejmenovani-souboru-v-ad…
touchwood 07.08.2013 10:45
touchwood
Jak už jsem psal jinde, protože tam jsi neupřesnil zadání, napíšu to sem... Vytvoř v té samé složce…
JoDiK 07.08.2013 10:48
JoDiK
děkuju, to je přesně ono :) mohl bych poprosit jeste s jednim stouravym dotazem? kdybych mel sezna…
Milan8 07.08.2013 11:08
Milan8
nedělej seznam.txt ale seznam.bat a do něj napiš( nebo použij nahrazování) pro každý soubor takovýto… poslední
JoDiK 07.08.2013 12:20
JoDiK
#ruby
require "fileutils"
files=["p.txt"] # seznam si snad dokazes ziskat
variants=%W(ko nd om)
files.each do |src|
	variants.each do |v|
		FileUtils.ln_s src, (src.gsub /\.(?=[^.]+$)/ , "_#{v}.") #misto ln_s treba cp

	end
end

trochu odfláklý je regulerni vyraz, který nefunguje na na souborech bez tečky
edit - přidány závorky (jediné), zase tak benevolentní ruby na závorky ruby není

tady máš 80% řešení:

http://pc.poradna.net/q/view/43896-soft-na-hromadn e-prejmenovani-souboru-v-adresari-podle-nazvu-adre sare?page=r44208#r44208

- místo přejmenování si v cyklu iterovaném přes pole jazykových verzí projedeš rozkopírování souboru. (pole = array ("_en", "_de", ...) a pak for each lang in pole a fso.CopyFile stary, novy)
- jen mírně upravíš výsledný název souboru
tj. něco jako novy = folder.path & "\" & koncovka(0)& lang & "." & koncovka(UBound(koncovka))

podotýkám, že takto napsaný kód nezohlední soubory s více tečkami v názvu (vezme jen část názvu souboru po první tečku)

P.S.: nezkoušel jsem, píšu to z hlavy, takže tam mohou být chyby (nezkoušej na datech od kterých nemáš zálohu)!

Dim fso, f, sf, sfl, folder, file, filelist, counter, warning, stary, novy, koncovka
  path = InputBox("Zadejte cestu k nadřazenému adresáři ve kterém se nachází adresáře s obrázky")
  warning = MsgBox("Budou přejmenovány soubory v podadresářích tohoto adresáře: " & path & ". Je to správně?", 276, "Poslední záchrana") 
  if warning = 6 then
  	Set fso = CreateObject("Scripting.FileSystemObject")
  	Set f = fso.GetFolder(path)
  	Set sf = f.SubFolders
	pole = array ("_en", "_de", "_es")
  	For Each folder in sf
		counter = 1
		Set sfl = fso.GetFolder(folder)
		set filelist = sfl.Files
		Wscript.echo " "
		Wscript.echo "Adresář " & folder
		Wscript.echo "číslo - starý název - nový název"
		Wscript.echo "==============================================================================="
		For Each file in filelist
			stary = file
			koncovka = Split(file.name, ".", -1, 1)
			for each lang in polelang
				novy = folder.path & "\" & koncovka(0)& lang & "." & koncovka(UBound(koncovka)) 
				fso.CopyFile stary, novy
			next
			wscript.echo counter & " - " & stary & " - " & novy
			counter = counter + 1
		next

	  next
 	Wscript.echo "Akce provedena!"
  Else
  	Wscript.echo "Akce byla zrušena!"
 	
  end if

Jak už jsem psal jinde, protože tam jsi neupřesnil zadání, napíšu to sem...
Vytvoř v té samé složce kde máš file.pdf nový textový soubor file.bat a do něj zkopíruj tenhle text:

@echo off
if "%1"=="" goto error
if not exist %1.pdf goto ferror
for %%a in (de, es, fr, gb, hu, it, nl, pl, ro, ru, sk, sv) do copy %1.pdf %1_%%a.pdf
goto end
:ferror
echo soubor %1.pdf neexistuje!
:error
echo Zadej jmeno zdrojoveho souboru bez pripony!
pause
:end

Pak stačí spustit file.bat a jako parametr mu předat jméno zdrojového souboru bez přípony...

Zpět do poradny Odpovědět na původní otázku Nahoru