获取文件名和修剪字符

我正在使用batch file来监视文件夹,并查看是否有任何文件。 我对批处理编程知之甚less,并且inheritance了这个文件,但是有没有人能让我知道是否有一种方法可以读取文件名,并从中修改一定数量的字符?

文件名总是如下所示:12345_20131031.txt _的右侧将会有8个字符,而“.txt”将会加上4个字符

我基本上只是想抓住文件名,并修剪所有的“_”和扩展的权利,所以我只剩下:12345

下面是我有循环通过文件的代码。 我一直跟随已经存在的东西,但我似乎得到的是文件的完整path/目录/文件名,我似乎无法得到正确的设置,只是给我的文件名,并修剪它。

任何帮助,将不胜感激:

@ECHO OFF set cnt= for %%a in (c:\Encoded_HL7_Vanderbilt\*.*) do set cnt=%%a if !%cnt%!==!! exit set "folder=%~1" :: If more than 0 files exist begin, otherwise exit FOR %%a IN (c:\Encoded_HL7_Vanderbilt_rob\*.*) DO ( :: need to get filename and trim everything to the right of "_" here ) exit :done goto :EOF 

这个例子显示了如何得到文件名%%~nA ,然后用_下划线来解析。

 @echo off pushd "c:\Encoded_HL7_Vanderbilt_rob\" for %%A in (*.*) do for /f "delims=_" %%B in ("%%~nA") do echo %%B popd 

以下内容将通过c:\ Encoded_HL7_Vanderbilt_rob \的目录列表进行循环,并在文件名中的_之前回显所有内容。 使用/ a:-d与dir将使其不显示目录。

 for /f "delims=_" %%A in ('dir /b /a:-dc:\Encoded_HL7_Vanderbilt_rob\') do ( echo %%A REM %%A will be the the first part of the file name. )