Algumas pessoas no stackoverflow conseguiram ajudar-me a obter a minha resposta se alguém tiver curiosidade:
cmd /v:on /c "for %a in ("C:\Test\ABC*.doc") do set docname=%~na & echo !docname:~3! >> C:\Test\Output.txt"
Estou tentando escrever algum código vba que envie uma linha de código para o prompt de comando e o execute. Eu tenho essa parte, mas preciso de ajuda para fazer o código funcionar.
Eu quero listar todos os arquivos em uma pasta específica que são a extensão de arquivo .doc, mas quero excluir os três primeiros caracteres do nome do arquivo que são impressos no arquivo de texto de saída. (Nota: Estou usando vba porque este é um dos vários comandos diferentes que eu gostaria de obter em uma única macro vba, e arquivos em lote são bloqueados para mim, então eu gostaria de trabalhar diretamente com o prompt de comando)
O código a seguir funciona e me fornece os nomes dos arquivos sem a extensão do arquivo (ou seja, ABC201704.doc retornará como ABC201704 )
%comspec% /c for %i in (C:\Test\ABC*.doc) do @echo %~ni >> C:\Test\Output.txt
No entanto, não sei como modificar isso para que não inclua os 3 primeiros caracteres (ou seja, retornaria 201704 em vez de ABC201704 ) . Qualquer ajuda seria muito apreciada! Tentei usar o link a seguir, mas não consegui descobrir como fazer isso funcionar na minha situação.
Algumas pessoas no stackoverflow conseguiram ajudar-me a obter a minha resposta se alguém tiver curiosidade:
cmd /v:on /c "for %a in ("C:\Test\ABC*.doc") do set docname=%~na & echo !docname:~3! >> C:\Test\Output.txt"
Use o seguinte arquivo de lote (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
Em seguida, no seu código VBA:
%comspec% /c test.cmd
Tags command-line batch-file vba