Batchfile om naam bestand te wijzigen

Status
Niet open voor verdere reacties.

rewico

Gebruiker
Lid geworden
23 jan 2010
Berichten
99
In een ver verleden heb ik het wel eens voor elkaar gekregen maar nu niet meer.
Er draait een programma wat een output genereert b.v. record.mp3
Het is de bedoeling dat het programma stopt en vervolgens de naam van record.mp3 gewijzigd wordt in huidigedatum.mp3 en hierna het programma weer wordt gestart om weer een nieuwe record.mp3 aan te maken.
 
Hernoemen naar de huidige datum? Een bestandsnaam moet uniek zijn. Je wil er dus maar 1 per dag hernoemen?
 
Klopt. kan ook meerdere keren per dag maar dan moet ook de tijd erbij staan om een unieke naam te krijgen.
 
Laatst bewerkt door een moderator:
Je zou zoiets kunnen gebruiken:
Code:
set bstdt=%date:~-10,2%%date:~-7,2%%date:~-4,4%%time:~0,2%%time:~3,2%%time:~6,2%
rename record.mp3 %bstdt%.mp3

De naam is dan bijvoorbeeld 06032016124103.mp3
 
Laatst bewerkt:
Geweldig, dat is hem. is er tussen date en time een streepje te maken?
 
Laatst bewerkt door een moderator:
Tuurlijk:
Code:
set bstdt=%date:~-10,2%%date:~-7,2%%date:~-4,4%-%time:~0,2%%time:~3,2%%time:~6,2%
 
Super, dat het soms zo simpel kan zijn. Jammer dat die bij time geen : accepteert.
 
Laatst bewerkt door een moderator:
Dat brengt het file systeem nu eenmaal met zich mee. Daarnaast zou je dan problemen krijgen met sorteren.
 
Ok, geen probleem hoor.
Heb het ietsie aangepast om de leesbaarheid iets te vergroten.
set bstdt=%date:~-10,2%-%date:~-7,2%-%date:~-4,4%-%time:~0,2%-%time:~3,2%-%time:~6,2%
geeft dan
06-03-2016-14-08-52

Nu nog even prutten om het programma te stoppen, bestand te hernoemen en dan het programma weer te starten.
 
Laatst bewerkt door een moderator:
Ik zou er dan dit van maken zodat het verschil tussen datum en tijd goed zichtbaar is: 06-03-2016_14-08-52

Een programma stoppen kan je doen met de TASKKILL opdracht:
Code:
TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

Description:
    This tool is used to terminate tasks by process id (PID) or image name.

Parameter List:
    /S    system           Specifies the remote system to connect to.

    /U    [domain\]user    Specifies the user context under which the
                           command should execute.

    /P    [password]       Specifies the password for the given user
                           context. Prompts for input if omitted.

    /FI   filter           Applies a filter to select a set of tasks.
                           Allows "*" to be used. ex. imagename eq acme*

    /PID  processid        Specifies the PID of the process to be terminated.
                           Use TaskList to get the PID.

    /IM   imagename        Specifies the image name of the process
                           to be terminated. Wildcard '*' can be used
                           to specify all tasks or image names.

    /T                     Terminates the specified process and any
                           child processes which were started by it.

    /F                     Specifies to forcefully terminate the process(es).

    /?                     Displays this help message.

Filters:
    Filter Name   Valid Operators           Valid Value(s)
    -----------   ---------------           -------------------------
    STATUS        eq, ne                    RUNNING |
                                            NOT RESPONDING | UNKNOWN
    IMAGENAME     eq, ne                    Image name
    PID           eq, ne, gt, lt, ge, le    PID value
    SESSION       eq, ne, gt, lt, ge, le    Session number.
    CPUTIME       eq, ne, gt, lt, ge, le    CPU time in the format
                                            of hh:mm:ss.
                                            hh - hours,
                                            mm - minutes, ss - seconds
    MEMUSAGE      eq, ne, gt, lt, ge, le    Memory usage in KB
    USERNAME      eq, ne                    User name in [domain\]user
                                            format
    MODULES       eq, ne                    DLL name
    SERVICES      eq, ne                    Service name
    WINDOWTITLE   eq, ne                    Window title

    NOTE
    ----
    1) Wildcard '*' for /IM switch is accepted only when a filter is applied.
    2) Termination of remote processes will always be done forcefully (/F).
    3) "WINDOWTITLE" and "STATUS" filters are not considered when a remote
       machine is specified.

Examples:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
 
Laatst bewerkt:
Ik zou er dan dit van maken zodat het verschil tussen datum en tijd goed zichtbaar is: 06-03-2016_14-08-52

inderdaad, ziet er duidelijker uit.
Dank voor de hulp, het werkt precies zoals het moet werken.
 
Vreemd, gisteren werkte het nog. krijg nu bij rename "the syntax off the command is incorrect"
@echo off.
taskkill /f /im winamp.exe
set bstdt=%date:~-10,2%-%date:~-7,2%-%date:~-4,4%_%time:~0,2%-%time:~3,2%-%time:~6,2%
rename record.mp3 %bstdt%.mp3
start winamp.exe
 
Dat commando ziet er goed uit dus ik kan hier vandaan zo niet zeggen waarom dat gebeurt.
 
Heb het gevonden. Het lijkt erop dat de hernoem regel te snel na het kill proces start. Met een korte pause erbij gaat het goed.
 
Laatst bewerkt door een moderator:
Ok dan. Goed gevonden :thumb:
 
Was even puzzelen en herinnerde mij dat dit vroeger ook eens bij een backuptaak de oplossing was.
Wat nu wel vreemd is dat als ik handmatig de batch doe het 100% werkt maar als het via de taakplanner gaat alleen het killgedeelte wordt uitgevoerd.
Zie ook geen command schermpje verschijnen.
 
Laatst bewerkt door een moderator:
Haal dat @echo off. er eens uit en zet Pause onder de Taskkill opdracht.
Kijk wat er dan verschijnt.
 
Maakt geen verschil. Er verschijnt geen schermpje.
 
Laatst bewerkt door een moderator:
Dat lijkt me sterk. Als je dubbelklikt op een .bat bestand waar een pause in zit dan stopt deze daar in een open command box.
 
Klopt en dat gebeurt ook bij dubbelklikken. de batch zelf werkt prima maar niet als ik die door de taakplanner laat uitvoeren.
De taak/batch start dan maar doet niet meer dan het kill deel en laat ook geen cmd schermpje zien.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan