Man*_*sai 5 batch-file working-directory windows-10
嗨,我对批处理文件还很陌生,如果这个问题看起来很愚蠢,我很抱歉,但我真的需要一些帮助。
所以我需要我的批处理脚本来检查它是否在指定的文件夹中,%userprofile%\Desktop例如。我不希望它关心自己的文件名。我完全不知道从哪里开始。我知道如何获取当前路径/文件名等,但这就是我所知道的。如何让程序将其当前路径与我想查看它是否在其中的路径进行比较?或者还有其他更有效的方法吗?
我想要实现的是这样的:
if this file is in Desktop folder(
echo It's here
)else(
echo It's not here
)
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏,谢谢大家
无需道歉,因为您提出的问题比您想象的更棘手。
这是您可以测试批处理文件是否位于特定文件夹中的方法,在您的情况下是在桌面文件夹中:
@echo off
:: Normalize this batch script's path
set BATCH_PATH=%~dp0
set BATCH_PATH=%BATCH_PATH:~0,-1%
:: Test for equality
if "%BATCH_PATH%"=="%USERPROFILE%\Desktop" (
echo This file is on Desktop.
) else (
echo This file is not on Desktop.
)
Run Code Online (Sandbox Code Playgroud)
标准化路径的替代方法(也是我最喜欢的)是:
pushd "%~dp0"
set BATCH_PATH=%CD%
popd
Run Code Online (Sandbox Code Playgroud)
\,这是标准化为您做的事情之一使用%~dp0变量而不是%cd%,因为后一个语义是您的脚本操作的文件夹,而第一个语义是您的脚本所在的文件夹(这就是您所要求的)
%0为您提供批处理脚本位置dp(即%dp0),您要求提供省略文件名和扩展名的磁盘和路径(类似于example.bat,这将成为下一步的负担 - 相等性检查)~您要求"在必要时删除任何打开或关闭(即包含空间的路径)路径被包裹起来,"以防止由于路径字符串中可能存在空格而导致错误
并不像人们想象的那么简单,对吧?
| 归档时间: |
|
| 查看次数: |
3068 次 |
| 最近记录: |