Flyckten Posted August 5, 2013 Share Posted August 5, 2013 Hej, Behöver göra en ms-dos kommandofil (specifikt). Filen ska leta i en fil som är döpt blablabla.qan (går att öppna med anteckningar), hitta en text sträng på rad 2 i filen och sedan döpa om aktuell fil till det namnet med ändelsen .txt Eftersom jag är helt rudis i dos programmering vet jag inte ens vart jag ska börja, känns däremot inte som något svårt problem. Jag bifogar en fil för exempel, den rad jag vill att filen sedan döps till är koden efter "sample name", alltså 23148 i detta fall. Kommer vara mer än en 5 siffrig kod framöver, exempelvis kommer stå något liknande: "23148 TR045 01-08 130805" Oerhört tacksam för hjälp! Edit: Fick inte ladda upp .qan filer, men den har egentligen den filändelsen. SuperQ.txt Link to comment Share on other sites More sharing options...
Flyckten Posted August 5, 2013 Author Share Posted August 5, 2013 Efter ha googlat lite fick jag fram följande: ::== @echo off setLocal EnableDelayedExpansion for /f "tokens=* delims= " %%a in (SuperQ.qan) do ( if !myvar!'==' set myvar=%%a ) echo myvar is set to !myvar! ::== Vilket tar rad 1 i SuperQ.qan och sätter den till variabeln myvar och sedan echoar den. Begränsningar här som måste lösas: SuperQ.qan kommer ha olika namn, däremot enda .qan filen i mappen (då de döps om automatiskt till txt när det väl funkar). myvar är nu första raden, borde vara andra plus att första 23 tecknen på den raden inte ska vara med. Och slutgiltigen, hur använder man myvar för att döpa om källfilen? Link to comment Share on other sites More sharing options...
Flyckten Posted August 5, 2013 Author Share Posted August 5, 2013 Okej leker runt lite och får lite grepp om det. ::== @echo off setLocal EnableDelayedExpansion for /f "skip=1 tokens=3 delims= " %%a in (SuperQ.qan) do ( if !myvar!'==' set myvar=%%a ) echo myvar is set to !myvar! ::== Ger mig 23148 -> myvar men om jag vill ha med det efterföljande får jag inte det att klaffa. Link to comment Share on other sites More sharing options...
Flyckten Posted August 5, 2013 Author Share Posted August 5, 2013 ::== @echo off setLocal EnableDelayedExpansion for /f "skip=1 tokens=3* delims= " %%a in (SuperQ.qan) do ( if !filnamn!'==' set filnamn=%%a %%b ) ren *.txt "!filnamn!".txt echo filnamn is set to !filnamn! ::== Fortsätter med mina framsteg så vet den som läser hur lång jag kommit Nu har jag lyckats göra det jag vill rent kommando mässigt. Det som jag inte får att funka är att den ska läsa en *.qan fil (den enda i mappen) utan att bry sig om vad den heter före .qan Det är egentligen det enda som återstår! Link to comment Share on other sites More sharing options...
Flyckten Posted August 5, 2013 Author Share Posted August 5, 2013 Okej, trodde inte jag skulle fixa detta själv men har löst problemet. ::== @echo off setLocal EnableDelayedExpansion dir /O-E > Dir\dir.txt for /f "skip=6 tokens=4 delims= " %%a in (dir/dir.txt) do ( if !qanfil!'==' set qanfil=%%a ) echo qanfil satt till !qanfil! for /f "skip=1 tokens=3* delims= " %%a in (!qanfil!) do ( if !filnamn!'==' set filnamn=%%a %%b ) echo filnamn satt till !filnamn! ren *.txt "!filnamn!".txt move "!filnamn!".txt Flytt ::== Det här blir lösningen iaf, kanske går att göra bättre men det här kommer iaf fungera Om nån har input så posta gärna Link to comment Share on other sites More sharing options...
Cecilia Posted August 5, 2013 Share Posted August 5, 2013 Poäng utdelad för att du skrev alla dina steg inkl. lösningen Link to comment Share on other sites More sharing options...
Flyckten Posted August 5, 2013 Author Share Posted August 5, 2013 Tack, började som en hur gör jag tråd men blev en steg för steg trial and error lösning Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.