如何从\\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
但是我想要给定路径中的第一个文件夹名称,这不符合我的规范。
有人能帮助我吗?
答案 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
。