Toon posts:

[DOS] DIR-parameter voor 8.3 bestandsnamen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een programma dat screenshots maakt van filmpjes (FrameShots) wil ik een batch file maken die van elk bestand op de harde schijf een filmpje maakt. Volgens de website kan dat op deze manier:

code:
1
FOR /F %%a IN ('dir *.avi /b') DO frameshots -thumbs 5 %%a


De batchfile heb ik iets aangepast:
code:
1
2
H:
FOR /F %%a IN ('dir *.avi, *.mpg, *.mpeg /b /s') DO "C:\Program Files\FrameShots\FrameShots.exe" -thumbs 16 -skipfront 1000 -skipback 15000 -height 400 -width 300 "%%a" "D:\cache\"


Het probleem is dat bestand- en map-namen waar een spatie inzitten worden afgebroken bij de spatie. Ik bedacht dat als ik het 8.3-formaat gebruikte voor bestandsnamen dat het probleem dan opgelost zou zijn.

Nu vond ik uit dat de /-N -parameter voor het DIR-commando precies dat doet, alleen ontdekte ik dat dat niet meer werkt als je de /b -parameter (kaal formaat gebruiken, geen extra informatie) er bij zet. Nu heb ik voor dit batchbestand juist dat nodig, ik ken zelf geen andere manier om een hele schijf uit te lezen en in een batchregel te stoppen.

Weet iemand of het mogelijk is het 8.3-formaat weer te geven én alleen het volledige path van het bestand? Of wellicht een workaround dat ook in een batch werkt.

  • Speed24
  • Registratie: Augustus 1999
  • Niet online
Als je met delims werkt ( zie 'for /?' ), dan werkt het wel.
Voorbeeld met originele commando:
code:
1
FOR /F "delims==" %%a IN ('dir *.avi /b') DO echo "%%a"


Dan krijg ik precies wat jij wil.
delims=xxx - specifies a delimiter set. This replaces the
default delimiter set of space and tab.
Space was dus een delimiter, zou je in de originele situatie per deel van de filename een nieuwe variabele moeten maken. Als je de delimiter op een andere waarde zet, dan heb je daar geen last van bij spaties.
Het =-teken kan niet voorkomen bij filenames, dus dat kan je veilig gebruiken.

Verwijderd

Topicstarter
Works like a charm! Bedankt :)

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Krypt
  • Registratie: April 2000
  • Laatst online: 12-02 20:18
Kan eigenlijk nog gemakkelijker en mooier
code:
1
for /r %%a in (*.avi, *.mpg, *.mpeg) do "C:\Program Files\FrameShots\FrameShots.exe" -thumbs 16 -skipfront 1000 -skipback 15000 -height 400 -width 300 "%%~sa" "D:\cache\"


Als je toevallig een directory met '.mpg' hebt dan heb je de kans dat het mis gaat.

Pvouput live


Verwijderd

Topicstarter
Krypt schreef op dinsdag 21 februari 2006 @ 10:37:
Kan eigenlijk nog gemakkelijker en mooier
code:
1
for /r %%a in (*.avi, *.mpg, *.mpeg) do "C:\Program Files\FrameShots\FrameShots.exe" -thumbs 16 -skipfront 1000 -skipback 15000 -height 400 -width 300 "%%~sa" "D:\cache\"


Als je toevallig een directory met '.mpg' hebt dan heb je de kans dat het mis gaat.
Die doet inderdaad exact wat ik vraag in de OP. Perfect! Maar met de oplossing van speed24 is het makkelijker om de afbeeldingen te linken aan het bronbestand, door middel van PHP. Ik ben namelijk een soort videobrowser aan het maken op mijn thuisserver, dus de eerste manier werkt hiervoor beter :)
Pagina: 1