Tech- & FAQ-Forum

Zurück   CC-Community Board > CC-CB Hauptforen > Tech & FAQ Forum

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 09.08.2009, 13:49   #1
Elektrospeedy
Oldie
 
Registriert seit: 23.04.2001
Beiträge: 1.029
Standard Automatisch Datein anhand vorhandener Files erstellen

Ich habe in einem Ordner "G:\Video\ " hunderte kurzer Videosequenzen vom AVCHD-Camcorder (00000.MTS .... 99999.MTS). Für jede MTS-Datei soll eine AviSynth-Scriptdatei mit der Endung .AVS mit folgendem Inhalt in den gleichen Ordner erstellt werden, also 00000.AVS :
Videoclip=DirectShowSource("G:\Video\00000.MTS",Audio=true)
return(Videoclip)

bis 99999.AVS :
Videoclip=DirectShowSource("G:\Video\99999.MTS",Audio=true)
return(Videoclip)

wobei gleichzeitig auch im Script der Dateiname der MTS-Datei geändert werden soll.
Nun gut, ich könnte es mir einfach machen, und 10000 Scripte im Voraus erstellen, doch es gibt auch schon Ordner neueren Datums, wo ich mittels HD-Writer meine Aufnahmen auf den Rechner gezogen habe. Dabei wurden sie automatisch umgewandelt in .M2TS und die Datein erhalten als Filenamen das Datum, also z.B. 20090704_100946.m2ts für 2009 4.Juli 10.09 Uhr 46Sekunden.
Ich suche nun nach einer Batch-Lösung oder auch VBS-Datei, da sich mein Scriptwissen nur sehr rudimentär auf Autoexec.bat u.d.Gl. aus früheren Win3.11-Zeiten beschränkt.
Danke schon mal für die Hilfe.
Elektrospeedy ist offline   Mit Zitat antworten
Alt 09.08.2009, 21:16   #2
mcxor
Oldie
 
Registriert seit: 22.04.2001
Beiträge: 830
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

Wenn du Perl installiert hast oder installieren willst:

Code:
use warnings;
use strict;
use File::stat;
use File::Find;
use File::Basename;
use Time::localtime;

my $basedir = "c:/temp/mts";

find(\&process_file, ($basedir));

sub process_file{
	#print $File::Find::name;
	return if (-d $File::Find::name); 
	return if ($File::Find::name !~ /.mts$/i); 
	parse_file($File::Find::name);
}

sub parse_file{
	my $file = shift;
	my($filename, $directories, $suffix) = fileparse($file, '\..*');
	my $avsdatei = $directories . $filename . ".avs";
	print "Schreibe $avsdatei...\n";
	open OUT, ">$avsdatei";
	print OUT 'Videoclip=DirectShowSource("';
	print OUT $file;
	print OUT '",Audio=true)';
	print OUT "\nreturn(Videoclip)";
	close OUT;
}
Dabei c:/temp/mts durch den Pfad zu den MTS' ersetzen.
mcxor ist offline   Mit Zitat antworten
Alt 10.08.2009, 15:28   #3
SkAvEnGeR
Master of Tools
 
Benutzerbild von SkAvEnGeR
 
Registriert seit: 21.05.2001
Beiträge: 3.894
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

Das geht wunderbar mit ner BATCH.

Genauer gesagt mit einer FOR DO WHILE Schleife.
Leider bin ich darin nicht so 100%ig fit.

Frag mal bei RAGNAR nach.
Am besten hier: http://www.cc-community.net/rags-bat...ad-t45518.html

Gruß
SkAvEnGeR ist offline   Mit Zitat antworten
Alt 10.08.2009, 16:20   #4
Elektrospeedy
Oldie
 
Registriert seit: 23.04.2001
Beiträge: 1.029
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

Danke Euch Beiden
Elektrospeedy ist offline   Mit Zitat antworten
Alt 13.08.2009, 19:07   #5
dr_tommi
alter Oldie
 
Benutzerbild von dr_tommi
 
Registriert seit: 26.04.2001
Ort: Berlin
Beiträge: 3.248
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

@Elektrospeedy
Willst du das nur für die *.mts oder auch für die *.m2ts ?
dr_tommi ist offline   Mit Zitat antworten
Alt 14.08.2009, 15:06   #6
Elektrospeedy
Oldie
 
Registriert seit: 23.04.2001
Beiträge: 1.029
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

Eigentlich für die m2ts, da nach dem letzten Update von Panasonic die Software HDWritwerAE funktioniert. Diese ordnet, was mir lieber ist, die Aufnahmen in nach Datum geordnete Ordner ein und benennt zusätzlich die Files von mts in m2ts um. Datenmäßig ist der Inhalt aber gleich.
Elektrospeedy ist offline   Mit Zitat antworten
Alt 22.08.2009, 16:11   #7
Elektrospeedy
Oldie
 
Registriert seit: 23.04.2001
Beiträge: 1.029
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

Danke an Euch Alle, besonders für den Tip von SkAvEnGeR
Hier nun meine Batchdatei:

@echo off
set path=G:\Video
for /R %path% %%x in (*.mts) do (
echo.Videoclip=DirectShowSource^("%%x",Audio=true^)
echo.return^(Videoclip^)
) >"%%~dpnx.avs"

Damit brauche ich nur die Path-Variable und die Dateiendung .MTS auszutauschen. Zusätzlich kann ich per echo noch weitere Funktionen für AVISynth übergeben, wichtig ist in der Batch dabei das Zeichen ^ , sonst kommt ein Syntaxfehler.
Elektrospeedy ist offline   Mit Zitat antworten
Alt 22.08.2009, 18:47   #8
SkAvEnGeR
Master of Tools
 
Benutzerbild von SkAvEnGeR
 
Registriert seit: 21.05.2001
Beiträge: 3.894
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

Hehe,

freut mich, das du eine praktikable Lösung gefunden hast.

Es ist doch immer wieder erstaunlich,
was man mit Batch-Scripten alles so bewerkstelligen kann.

Ich wette, DAMIT hättest du nicht gerechnet


Leider gibt es aber noch viele andere User, die noch nie was von "Eingabeaufforderung" gehört haben.



MSDOS incl. Batch-Scripting is simple, fast and cool.

rock on
SkAvEnGeR ist offline   Mit Zitat antworten
Folgender Benutzer sagt Danke zu SkAvEnGeR für den nützlichen Beitrag:
Alt 05.09.2010, 18:10   #9
Elektrospeedy
Oldie
 
Registriert seit: 23.04.2001
Beiträge: 1.029
Standard AW: Automatisch Datein anhand vorhandener Files erstellen

So, der Urlaub ist vorbei und ich habe noch etwas rumexperimentiert. In meiner erweiterten Variante kann sich die Batchdatei in irgend einem anderen Verzeichnis befinden, ich brauche nur noch den Ordner mit den Videofiles auf die Batch zu ziehen, der Rest geschieht automatisch:

Code:
@echo off
set path=%1%
color 9e
set endung=0
Echo         0=wenn keine gültigen Datein vorhanden sind
if exist "%path%/*.mts" Echo 	1=MTS, MTS-Stream
if exist "%path%/*.m2ts" Echo 	2=M2TS, M2TS-Stream
if exist "%path%/*.mpg" Echo 	3=MPG, MPG-Video
if exist "%path%/*.mpeg" Echo 	4=MPEG, MPEG-Video
Echo.
set /p endung=  Dateiendung auswählen:
:Bedingung
if %endung%==1 set file=MTS
if %endung%==2 set file=M2TS
if %endung%==3 set file=MPG
if %endung%==4 set file=MPEG 
if %endung%==0 Exit
if not exist "%path%/*.%file%" goto fehler
goto script
:fehler
set /p endung=keine gültige Datei vorhanden, neu eingeben:
goto Bedingung
:Script
for /R %path% %%x in (*.%file%) do (
	echo.Videoclip=DirectShowSource^("%%x",Audio=true^)
	echo.return^(Videoclip^)
) >>"%%~dpnx.avs"
exit
Elektrospeedy ist offline   Mit Zitat antworten
Folgender Benutzer sagt Danke zu Elektrospeedy für den nützlichen Beitrag:
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.


vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.