Powershell script, executing commands to lots of files

elokuu 12, 2009 at 18:46 (coding) (, , , , , , )

Following powershell script goes recursively the folder “J:\pictures” and converts all avi file to mp4 files. It uses ffmpeg (remember to download newest binary)

I couldn’t get invoke-expression to work (it gave some error about “-” operator), so I just sticked all the commands to a text file d:\commands.txt and run it as a normal batch script.

I used this script to convert lots of videos shot with my camera to more compatible format.

"" > d:\commands.txt
foreach ($file in get-childitem "j:\pictures" -recurse -include "*.avi"){
$ffmpegprog = "`"C:\Program Files (x86)\WinFF\ffmpeg.exe`"";
$ffmpegparams = " -threads 2 -f mp4 -vcodec libx264 -b 1500k -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -b 1500k -maxrate 2000k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me_method umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec aac -ab 256k -ac 2 -ar 44100";
$command = ($ffmpegprog + " -i `"" + $file.FullName + "`"" + $ffmpegparams + " `"" + [System.IO.Path]::ChangeExtension($file.FullName, ".mp4") + "`"");
$("$command") >> D:\commands.txt
}

You can just copy-paste the file to a powershell window.

For some reason direct execution of the commands.txt batch file didn’t work so you can just run it throught type

type d:\commands.txt > d:\commands.bat

Osoiterakenne 1 kommentti

USB Drive letters changing in Windows?

joulukuu 16, 2008 at 09:34 (coding) (, , , , , , , )

Try this program:

USBDLM

It allows user to make ntfs folder mounts automatically, similar to unix systems.


[Settings]
DeleteMountPointsOnRemoval=1
WriteDebugInfo=1
LogLevel=3
WriteLogFile=1
LogFile=D:\Apps\USBDLM\USBDLM.LOG
;
;Remove unused folder mounts
[DeleteUnusedNtfsMountpoints]
Folder1=C:\mount\
;
;If drive has usbdlm.ini file, use it! Otherwise assign drive letter manually
;Not that by default this works only for USB drives, add BusType definitions
;to process Firewire drives too
[DriveLetters]
Letters=%drive%\usbdlm.ini
Letter1=H
Letter2=I
Letter3=J
Letter4=K
Letter5=L
Letter6=N
;
;If you want to hide particular devices from "safe remove" hardware dialog
;[HideFromSafelyRemoveHardware]
;DeviceID1=USB\VID_0424&PID_2228\26020128B005
;DeviceID2=USB\VID_0424&PID_2602\6&1B3E90B3&0&1

Now, the usb drive should have a configuration file, usbdlm.ini, with the following contents:


[DriveLetters]
Letter1=C:\mount\usbdrive

Much more information is found in the program manual.

Osoiterakenne Kommentoi

ASP.NET Tracing ja System.Diagnostics Tracing

toukokuu 12, 2008 at 16:55 (.net, coding) ()

Miten saada ASP.Netin trace logit ylös?

Pitää kääntää sivut käyttäen trace define-vipua eli seuraavat attribuutit pitää lisätä kääntäjille (system.codedom/compilers/compiler) web.config-asetustiedostossa

c#: compilerOptions="/d:TRACE"

vb:compilerOptions="/d:Trace=true"

Sen lisäksi tietenkin tracekuuntelijat:

<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="WebPageTraceListener"
type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="TestTracer"
type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="Asptesttrace.log" />
</listeners>
</trace>

lähde:

Walkthrough: Integrating ASP.NET Tracing with System.Diagnostics Tracing

Osoiterakenne Kommentoi

BackgroundWorker ei kaappaa poikkeuksia DoWork-metodin sisällä jos ohjelmaa ajetaan debug-moodissa VS:llä

toukokuu 12, 2008 at 15:34 (.net, coding) (, , , )

BackgroundWorker ei kaappaa poikkeuksia DoWork-metodin sisällä jos ohjelmaa ajetaan debug-moodissa VS:llä. Poikkeuksethan pitäisi pystyä käsittelemään RunWorkerCompleted-eventhandlerin avulla (e.Error)

Syynä on se, että VS on kovin innokas varastamaaan lentävän poikkeuksen.

Korjaus:Jotta ohjelma käyttäytyisi debug-moodissa kuten release-moodissa pitää DoWork-metodi koristella [System.Diagnostics.DebuggerNonUserCodeAttribute()] attribuutilla. esim

[System.Diagnostics.DebuggerNonUserCodeAttribute()]
void worker_DoWork(object sender, DoWorkEventArgs e)
{

}

lähde:

BackgroundWorker unhandled error – MSDN Forums

Osoiterakenne Kommentoi

ASP.NET MVC Preview 2

maaliskuu 14, 2008 at 11:06 (.net, coding) ()

Latasin ja asensin MVC Preview 2:n (saatavilla asp.net -sivulta). Release noteissa sanotaan ettei toimi asp.net AJAX:n kanssa.

Harmi.

sen verran iso puute tuo on, että en tiedä jaksaako leikkiä tuolla pidempään.

featureita, jotka pisti kuitenkin silmään:

  • Viewien cacheaminen yhdellä koodi-attribuutilla.
  • helppo unit testaus

Virallista RTM-päivää ei MVC:lle ole, veikattu on 2008Q3-Q4.

Osoiterakenne Kommentoi

DateTime parsimisesta

maaliskuu 7, 2008 at 12:42 (.net, coding)

format specifier selite
yy,yyyy vuodet
M, MM kuukaudet
d, dd päivät
H, HH tunnit
m, mm minuutit
s, ss sekunnit
f,ff,fff,ffff sekunnin murto-osa (eri tarkkuuksia)
\” teksti
teksti
: aika-erotin
/ päivämäärä-erotin

Lisää tietoa löytyy MSDN:stä:

Standard DateTime Format Strings
Custom DateTime Format Strings

Yleisimpiä formaatteja

yyyy’.'MM’.'dd
yyyy’-'MM’-'dd
yyyy’-'MM’-'dd’ ‘HH’-'MM’-’ss
yyyy’-'MM’-'dd’ ‘HH’:'MM’:’ss

yyyyMMdd
dd’.'MM’.'yyyy
dd’-'MM’-'yyyy’ ‘HH’:'MM’:’ss
ddMMyyyy

Osoiterakenne Kommentoi

msxml4 ongelmanratkaisua

maaliskuu 4, 2008 at 07:39 (coding) (, )

Jos käy niin, että msxml4 sp2 kirjastoa käytettäessä dokumentin loadaus onnistuu näennäisesti oikein (ei herjoja) mutta documentElement on null/nothing, saattaa syynä olla parseError

   1:  set source2 = Server.CreateObject("MSXML2.DOMDocument.4.0")
   2:  source2.async = false
   3:  source2.load("c:files.xml")
   4:  set sourceRoot2 = source2.documentElement
   5:  'nyt tässä vaiheessa sourceRoot2 on nothing,'mutta source2 ei ole.
   6:  'tarkasta aina parseError seuraavasti
   7:  if source2.parseError then
   8:    response.write source2.parseError.reason
   9:    response.end
  10:  end if
  11:  ...


Minulla oli eräs tilanne, että xml oli linkattu schemaan xsi:noNamespaceSchema attribuutilla, ja msxml tarkasti automaattisesti xmlää schemaa vasten. Vastaisuudessa kyllä laitan aina virheentarkistukset niin ei tarvitse tulkita outoja virheilmoituksia.

Osoiterakenne Kommentoi