如何从当前目录中获取名称

时间:2015-09-12 00:04:19

标签: batch-file

我一直希望我的脚本找到一个以字符串“onedrive ...”开头的文件夹。 我的代码看起来像这样,

@echo off

set path="C:\Users\%USERNAME%"

if exist %path% (
cd "%path%\onedrive*"
echo %cd%
cd
)
pause

,我得到的输出是,

C:\Users\310176421\Backupscript\source
C:\Users\310176421\OneDrive for Business

其中第一个是我的.bat文件目录,第二个是我想要变成变量的行。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

哦,男人不这样做,你覆盖了系统PATH。您必须为该变量使用其他名称。而且你必须将它设置为本地。

@echo off
SETLOCAL

REM blah blah
set _my_custom_path=....

ENDLOCAL

答案 1 :(得分:0)

这是一个简单的批处理代码,它在当前用户的配置文件目录中搜索以字符串OneDrive开头的目录,并在退出批处理之前将没有引号的第一个找到的文件夹的完整路径分配给环境变量输出。 / p>

@echo off
for /F "delims=" %%I in ('dir /AD /B /S "%USERPROFILE%\OneDrive*" 2^>nul') do (
    set "OneDriveFolder=%%~I"
    goto FoundFolder
)
echo Could not find a folder OneDrive.
goto :EOF

:FoundFolder
echo Found folder: %OneDriveFolder%
set "OneDriveFolder="

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • dir /?
  • for /?
  • goto /?
  • set /?

注1:C:\Users\%USERNAME%并不总是等于%USERPROFILE%,因为配置文件目录也可以位于驱动器C:之外的其他驱动器上,而Users只是默认值 Windows Vista及更高版本上用户配置文件的父目录。

注意2:2^>nul将命令 DIR 的错误消息重定向到stdout到设备nul,这意味着在没有目录启动的情况下抑制错误消息OneDrive被发现不区分大小写。 ^转义重定向操作符>,命令 FOR 在命令 DIR 上应用2>nul