2016-11-21 6 views
0

Ich habe eine Batch-Datei an einem bestimmten Speicherort. Diese Stapeldatei benennt die Bilder am selben Ort um. Ich muss nur diese Batch-Datei über die Makro-Schaltfläche von Excel ausführen. Ist es auch möglich, den PREFIX-Wert als Benutzereingabe einzugeben. Ich schätze es, wenn jemand dafür Makro bereitstellen kann.Batch-Datei über eine Makro-Schaltfläche ausführen

@echo off 
SET COUNT=1 
SET PREFIX=40054578_Image 
FOR /f "tokens=*" %%G IN ('dir /b *.jpg') DO (call :renum "%%G") 
GOTO :eof 

:renum 
ren %1 %PREFIX%-%count%.jpg 
set /a count+=1 
GOTO :eof 
+0

Vielleicht sollten Sie diese Frage prüfen und auf Ihre spezifische Situation anpassen: http://stackoverflow.com/q/8735463/6671476 – RCaetano

Antwort

0

In Excel, kopieren Sie diesen Code am Anfang Ihres Moduls:

Private Declare Function OpenProcess _ 
    Lib "kernel32" _ 
    (ByVal dwDesiredAccess As Long, _ 
    ByVal bInheritHandle As Long, _ 
    ByVal dwProcessId As Long) As Long 

Private Declare Function CloseHandle _ 
    Lib "kernel32" _ 
    (ByVal hObject As Long) As Long 

Private Declare Function WaitForSingleObject _ 
    Lib "kernel32" _ 
    (ByVal hHandle As Long, _ 
    ByVal dwMilliseconds As Long) As Long 

nun das Makro unter diesem Code kopieren und ändern Sie den Pfad Ihrer Fledermaus Dateinamen und Verzeichnisposition übereinstimmen :

Sub runBatch() 
    Dim path As String 
    path = "C:\Users\yourUserName\Desktop\myBatchFile.bat" '<-- change this 

    'Ask user for prefix 
    Dim prefix As String 
    prefix = InputBox(Prompt:="Enter Prefix: ", Title:="Prefix", Default:="Enter Prefix Here") 

    'Make sure something was entered 
    If prefix = vbNullString Or prefix = "Enter Prefix Here" Then Exit Sub 

    'Run bat file 
    procID = Shell(path & " " & prefix, vbNormalFocus) 

    If procID = 0 Then 
     'Handle Error, Shell Didn't Work 
    Else 
     hProcess = OpenProcess(&H100000, True, procID) 
     WaitForSingleObject hProcess, -1 
     CloseHandle hProcess 
    End If 
End Sub 

Dieses Makro Aufforderung S Der Benutzer kann ein Präfix in ein Textfeld eingeben und übergibt den Wert dann an die Stapeldatei. Jetzt ist Ihre Batch-Datei ändern, indem Sie das Präfix %1 den übergebenen Parameter zu verwenden (bedeutet der erste Parameter Batchdatei übergeben):

SET PREFIX=%1 

Wenn Sie den Wert in die Batch-Datei übergeben, um sehen möchten, Fügen Sie ECHO hinzu und halten Sie die Stapelverarbeitungsdatei an, damit die Konsole nicht sofort verworfen wird.

@echo off 
ECHO Prefix passed in: %1 
pause 
+0

Hallo Runner, Danke. Es fragt nach Benutzereingaben und dann blinkt ein DOS-Eingabeaufforderungsfenster und dort wird keine Datei gefunden. Nichts passiert. Wenn ich den Ordner überprüft habe, wurde der Präfixparameter nicht übergeben und die Umbenennung ist nie erfolgt. Irgendeine Idee bitte. – Siraj

+0

Wenn der Pfad und Dateiname in der VBA zu Ihrer Batch-Datei nicht korrekt ist, wird der Fehler "Datei nicht gefunden" angezeigt. Stellen Sie sicher, dass Ihr Pfad ... C: \ ... korrekt ist. –

+0

Probieren Sie meine Arbeitsmappe aus und laden Sie diese beiden Dateien herunter: [Datei1] (https://drive.google.com/open?id=0B8oK36klPLEWa21WbEVPb1RNVWc), [Datei2] (https://drive.google.com/open?id=0B8oK36klPLEWSDdEZnA5YURlWs) und legen Sie sie in diesen neuen Ordner 'C: \ Temp \ excel'. Öffnen Sie die Excel-Arbeitsmappe und führen Sie das Makro über die Schaltfläche aus. –

Verwandte Themen