Már kisült az agyam a gúglizástól, de nem sikerült megfelelően körbeírnom a problémát, így nem találtam megfelelő választ sem.
Adott egy csomó fájl:
valami1.ts
valami2.ts
(...)
valami9.ts
valami10.ts
valami11.ts
(...)
valami99.ts
valami100.ts
valami101.ts
(...)
...estébé, magyarul nem zero paddelt számok vannak a fájlnevekben, ha pedig Windows parancssorban ráeresztek egy copy /b *.ts all.ts
parancsot, akkor ez a drága olyan sorrendben kezdi el összefűzni őket, hogy valami1.ts, valami10.ts, valami100.ts, valami101.ts ésatöbbi. A fájlokat az összefűzés után ffmpeg rágná át (ffmpeg -i all.ts -acodec copy -vcodec copy all.mp4
), ami tudom, hogy képes fájlneveket tartalmazó txt fájlból dolgozni, de egy általános megoldás érdekelne erre a problémára, lehetőleg parancssoros. Nyilván elő tudom venni a Bulk Rename Utility-t, de na. Az oprendszer Windows 10, ha 3rd party util csinálja a varázslatot, az sem gond.
Előre is köszi az ötleteket.
Szerk.:
MEGOLDVA!
A helyes megfejtők között Microsoft pólót akartam kisorsolni, de mrceeka szállította a választ, neki meg úgyis biztos van ;)
- 2836 megtekintés
Hozzászólások
Szia,
total commanderrel meg lehet szerintem csinálni.
Egy könyvtárba teszed a valami1.ts, valami2.ts.... file-okat, és beállítod a total commandert, hogy "természetes" sorrendbe állítsa a file neveket: Configuration menu / Options / Display / Sort method: "Natural sorting: alphabetical and numbers".
Aztán, ráállsz a cursor-ral a valami1.ts-re, és Files menu / Combine files.
Üdv,
Gergő
- A hozzászóláshoz be kell jelentkezni
Köszi a tippet, de GUI-s megoldást én is tudok (írtam is a nyitóban), valami parancssoros megoldás érdekelne.
- A hozzászóláshoz be kell jelentkezni
Mennyire szempont ezt a Windows beépített eszközeivel megoldani, vagy lehet használni third-party programot erre a célra? Mivel ffmpeg van, ezért gondolom más is lehet third-party.
Ez esetben, talán az a legegyszerűbb, ha felteszel egy Windows-ra lefordított GNU sort-ot (cygwin, stb.) ami képes natural order szerint rendezni a fájl és/vagy az stdin tartalmát. (sort -V)
- A hozzászóláshoz be kell jelentkezni
"Az oprendszer Windows 10, ha 3rd party util csinálja a varázslatot, az sem gond."
Van cygwin meg Ubi alrendszer. Abbol felteszed, amelyik tetszik. Utana:
for i in `seq 101`;do echo cat "valami${i}.ts" >>all.ts; done
--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin
- A hozzászóláshoz be kell jelentkezni
Sima shellben is van for loop és copy /b, de inkább PS-ben csinálnám. Valami ilyesmi (nem futtattam):
New-Item -ItemType file minden.ts
foreach($i in 1..10){
Get-Content "file$($i).ts" | Add-Content minden.ts
}
- A hozzászóláshoz be kell jelentkezni
Köszönöm. PowerShellhez totál hülye vagyok, reménykedtem is abban, hogy valaki bedob egy erre alapuló megoldást.
Kipróbáltam amit írtál, de valami nem klappol vele. Eleve a forrásfájlok és az összefűzött fájl mérete nem pontosan stimmelt (ellentétben a copy /b
módszerrel) és az ffmpeg sem tudta megrágni az eredményt ("Invalid data found when processing input"). Aztán picit utánanéztem és az Add-Content
eleve alapértelmezetten ASCII módban dolgozik. Ha viszont használom a doksijában leírt -Encoding Unknown
kapcsolót (amit elvileg a bináris működéshez ajánl), akkor még viccesebb az eredmény, a fájlméret a forrásfájlok kb. duplája.
- A hozzászóláshoz be kell jelentkezni
Meg kell adnod a -NoNewLine opciót is.
- A hozzászóláshoz be kell jelentkezni
copy /b valami?.ts valami??.ts valami???.ts all.ts
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
Kreatív, tetszik :) viszont sajna nem működik. Kell az input fájlok közé egy +
, de a fő baj az, hogy a valami??.ts
filterre matchel a valami1.ts
is, és emiatt jön a szokásos eredmény.
- A hozzászóláshoz be kell jelentkezni
Sajnálom, és igazából valami ilyentől féltem. (Mármint, hogy még a globbingot is sikerült elbaszniuk ott a Microsoft Drive-on. Hogy a tökömben illeszkedhet a valami??.ts a valami1.ts-re, azt fel nem foghatom.)
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
1. SOHA ne sorszámozz fájlnevet így: 1, 2, 3, 4, ....9, 10, hanem így: 01, 02,03,04... 10, stb
... és akkor mehet valami ilyesmi script:
#######################################################
ALLDATA="./gyujto_file.ts"
rm $ALLDATA
ls ./valami*.ts > ./stream.lst
cat < ./stream.lst | while read DATA_STREAM
do
cat < $DATA_STREAM >> $ALLDATA
echo $DATA_STREAM
done
#######################################################
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni
Okkkkééé... izé, kösz. Majd írok egy körlevelet a Wowza meg mindenféle más video streaming szerver szoftverek fejlesztőinek, hogy SOHA ne számozzák így a fájlneveket :)
- A hozzászóláshoz be kell jelentkezni
Megvan a működő megoldás?
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Fórumok -> Egyéb -> Microsoft Windows
(Amúgy én előbb két lépésben átnevezném a fájlokat. Ha már az előző javaslatom elvérzett a command.com hülyeségén.)
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
Basszus... bocs (-::
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni
cc.bat:
SET fn=valami
FOR /F %%i IN ('dir %fn%*.ts /b ^| find /c "%fn%"') DO SET cnt=%%i
copy %fn%1.ts all.ts
FOR /L %%j IN (2,1,%cnt%) DO copy /b all.ts+%fn%%%j.ts all.ts
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Ez nyert! Köszi, Marci. Tuningolok belőle egy olyan verziót ami argumentumban fogadja fájlnév prefixet és megy is a PATH-ba :)
- A hozzászóláshoz be kell jelentkezni
Használd egészséggel!
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
filoztam rajta, hogy szovategyem vagy sem, mert az adott problemara a megoldas teljesen jo.
szerintem oda kell figyelni, mert ha olyan eset jon szembe, hogy lik van a sorszamok kozott, akkor mar nem az jon ki belole, amit varna az emberfia.
--
HUP te Zsiga !
- A hozzászóláshoz be kell jelentkezni
Ez ugyan egy másik feladat, de akkor pedig például:
shellsort letölt innen: https://blogs.msdn.microsoft.com/matthew_van_eerde/2015/02/03/using-str…
SET fn=valami
ECHO. 2>all.ts
FOR /F %%i IN ('dir %fn%*.ts /b ^| shellsort') DO copy /b all.ts+%%i all.ts
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
PowerShell:
$fn="valami"
New-Item all.ts -ItemType file
Get-ChildItem $fn*.ts | ForEach-Object {$_.Name.Replace($fn, '')} | ForEach-Object {$_.Replace('.ts', '')} | Sort-Object @{e={$_ -as [int]}} | ForEach-Object { cmd /c copy /b all.ts+$fn$_.ts all.ts }
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
https://stackoverflow.com/questions/5427506/how-to-sort-by-file-name-th…
Elvileg:
$ToNatural = { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }
'----- test 3 Natural order: sorted with padded numbers'
Get-Content list.txt | Sort-Object $ToNatural
- A hozzászóláshoz be kell jelentkezni
emlekeim szerint van gnu coreutils windowsra, abban gnu sort, es az a sima windowsos sorttal ellentetben tud numerikus rendezest, a tobbit majd kesobb kitalalom :D)
** mindjart ki is probaltam :
>>>>>
c:\teszt>dir /b | "c:\program files\gnuwin32\bin\sort" -g
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
10.txt
11.txt
12.txt
21.txt
32.txt
35.txt
98.txt
<<<<<
--
HUP te Zsiga !
- A hozzászóláshoz be kell jelentkezni
masol.bat :
@echo off
del eredmeny.txt
dir *.txt /b | "c:\program files\gnuwin32\bin\sort" -g >tempfile
echo 2>eredmeny.txt
for /f %%i in ('type tempfile') do copy /b eredmeny.txt + %%i eredmeny.txt
--
HUP te Zsiga !
- A hozzászóláshoz be kell jelentkezni
Én ffmpeg-gel csinálnám, ugyanis az egymás mögé rakosgatott transport stream konténernek nem fognak örülni a médialejátszók. Szóval valami ilyesmi
dir /b > lista.txt
ffmpeg -f concat -i lista.txt -c copy output.ts
No keyboard detected... Press F1 to run the SETUP
- A hozzászóláshoz be kell jelentkezni
De, nagyon fognak orulni neki, pont az a MPEG TS lenyege.
- A hozzászóláshoz be kell jelentkezni
A kezdő hozzászólásban említettem is, hogy az összefűzés után ffmpeg -i all.ts -acodec copy -vcodec copy all.mp4
vár a cuccra; gyakorlatilag ugyanaz, amit írtál :) fájlméret lefaragás szempontjából is igen hasznos.
- A hozzászóláshoz be kell jelentkezni
Akkor meg kiváltképp jó. Nem -i all.ts paraméterrel hívod meg, hanem -i lista.txt-vel és készen is vagy. Még egyszerűbb is, mint először feleslegesen összefűzni és utána konvertálni, így megúszod az egészet egyetlen lépésből.
Azt nem tudtam, hogy a ts-streamnek az összefűzés nem számít.
No keyboard detected... Press F1 to run the SETUP
- A hozzászóláshoz be kell jelentkezni
ls *.ts | sort -V | while read names; do cat $names >>valamik_egyben.ts; done;
mpeg ts/ps -nél működik a sima összemásolás
-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba
- A hozzászóláshoz be kell jelentkezni
CSAK TS-nel, PS-nel nem megy, az mas kontener formatum
- A hozzászóláshoz be kell jelentkezni