如何在批处理文件中的给定路径中获取第一个(上次修改的)文件夹名称

时间:2017-09-11 09:04:26

标签: windows batch-file directory

如何从\\demo\Test\test1\获取第一个(上次修改的)文件夹名称?
如果第一个文件夹是test-new_20170908.2,我该如何获得test-new_20170908.2而只有20170908.2部分?

这是我到目前为止所做的:

@echo off
set MYDIR=\\demo\Test\test1\
set MYDIR1=%MYDIR:~0,-1%
for %%f in (%MYDIR1%) do set myfolder=%%~nxf
echo %myfolder% > folderPath.txt

这段代码给了我test1但是我想要给定路径中的第一个文件夹名称,这不符合我的规范。
有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

以下脚本将对/a:d下的所有目录(demo\Test\test1)按上次写入日期(/o:-d /tw)进行排序,并保存由{{1}分隔的名称的第二个标记}:_name_date

批量脚本:

date

<强>输出:

@echo off

set "MYDIR=demo\Test\test1"

rem sort directories by date (last write)
for /f "tokens=*" %%f in ('dir "%MYDIR%" /a:d /o:-d /tw /b') do (
   rem use second token after _ in name
   for /f "tokens=2 delims=_" %%a in ('echo %%f') do ( set "myfolder=%%a" )
   goto :found
)

:found

echo %myfolder%

来自ss64.com的命令参考链接:

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
set MYDIR=\\demo\Test\test1\
set MYDIR1=%MYDIR:~0,-1%
SET "mydir=U:\sourcedir\"
FOR /d %%a IN ("%mydir%\*") DO SET "myfolder=%%~nxa"&GOTO found
:found
echo %myfolder%

GOTO :EOF

我将mydir的设置覆盖到我系统中更方便的目录。

查找与提供的掩码匹配的所有目录(for /d)(\此处使您在\的值中包含终端mydir无关紧要(我的首选是省略该终端\)然后将返回的目录名视为文件名,并使用for名称分区运算符选择名称和扩展名;将结果分配给变量并强制退出发生第一次作业后for goto