So rufen Sie die Befehlszeile mit vba auf, um die Dateinamen aufzulisten

3

Ich versuche, einen vba-Code zu schreiben, der eine Codezeile an die Eingabeaufforderung sendet und diese ausführt. Ich habe diesen Teil unten, aber ich benötige Hilfe, um den tatsächlichen Code zum Arbeiten zu erhalten.

Ich möchte alle Dateien in einem bestimmten Ordner mit der Dateierweiterung .doc auflisten, aber die ersten drei Zeichen des Dateinamens, die in meiner ausgegebenen Textdatei gedruckt werden, ausschließen. (Hinweis: Ich verwende vba, da dies einer von mehreren verschiedenen Befehlen ist, die ich in ein einziges vba-Makro integrieren möchte. Batchdateien sind für mich blockiert, daher möchte ich direkt mit der Eingabeaufforderung arbeiten.)

Der folgende Code funktioniert und gibt mir die Dateinamen ohne die Dateierweiterung (dh ABC201704.doc wird als ABC201704 zurückgegeben )

%comspec% /c for %i in (C:\Test\ABC*.doc) do @echo %~ni >> C:\Test\Output.txt

Ich weiß jedoch nicht, wie ich das ändern soll, damit es nicht die ersten 3 Zeichen enthält (dh es würde 201704 anstelle von ABC201704 zurückgeben ). Jede Hilfe wäre sehr dankbar! Ich habe versucht, den folgenden Link zu verwenden, aber ich konnte nicht herausfinden, wie das für meine Situation funktioniert.

Beliebige Methode zum Abrufen der ersten Zeichen des Dateinamens in der DOS-Batchdatei-Programmierung

ampsoccer17
quelle

Antworten:

0

Ich weiß nicht, wie ich das ändern soll, damit es nicht die ersten 3 Zeichen enthält

Verwenden Sie die folgende Batchdatei (test.cmd):

@echo off 
setlocal enabledelayedexpansion
for %%i in (C:\Test\ABC*.doc) do (
   set _file=%%~ni 
   set _file=!_file:~3!
   echo !_file!
   ) >> C:\Test\Output.txt
endlocal

Dann in Ihrem VBA-Code:

%comspec% /c test.cmd

Weitere Lektüre

DavidPostill
quelle
Leider schien das bei mir nicht zu funktionieren. Das cmd-Fenster öffnet sich schnell und verschwindet, als ob es den Code nicht ausgeführt hätte. Batch-Dateien sind auf meinem System blockiert, was möglicherweise etwas damit zu tun hat.
ampsoccer17
@ ampsoccer17 Versuchen Sie es %comspec% /k test.cmdstattdessen
DavidPostill
Ich habe den vba-Code in C: \ Test \ test.cmd geändert und das hat das Problem behoben, aber ich bin zu meinem ersten Problem zurückgekehrt, bei dem Batchdateien auf meinem System blockiert wurden, sodass sie nicht ausgeführt werden konnten.
ampsoccer17