Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 网络共享中的批处理where命令看不到本地C_Batch File_Cmd - Fatal编程技术网

Batch file 网络共享中的批处理where命令看不到本地C

Batch file 网络共享中的批处理where命令看不到本地C,batch-file,cmd,Batch File,Cmd,我有一个bat脚本,它只是试图在启动它的用户本地C驱动器中找到一个exe,代码如下: @echo off for /f "delims=" %%i in ('where /r "C:\Program Files (x86)\Microsoft SQL Server" bcp.exe') do set output=%%i if "%output%"=="" ( for /f "delims=" %%i in ('where /r "C:\Program Files\Microsoft SQ

我有一个bat脚本,它只是试图在启动它的用户本地C驱动器中找到一个exe,代码如下:

@echo off
for /f "delims=" %%i in ('where /r "C:\Program Files (x86)\Microsoft SQL Server" bcp.exe') do set output=%%i
if "%output%"=="" (
   for /f "delims=" %%i in ('where /r "C:\Program Files\Microsoft SQL Server" bcp.exe') do set output=%%i
)
echo %output%
从用户计算机上的本地目录运行时,%output%将具有有效路径。但是,问题是,该脚本所在的网络共享映射到每个人的计算机(L:\Drive)上的每个人都可以使用它

因此,如果从命令行本地调用脚本:

C:\Test>findBCP.bat
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe
但如果从L运行:\

L:\Shared Scripts>findBCP.bat
INFO: Could not find files for the given pattern(s).
%i
编辑:
经过无数次的努力,在关闭所有cmd会话并清理我的%PATH%之后,我再次尝试了这一点,这本不重要的,我重新连接到网络共享并尝试重新运行,一切似乎都很好。但不确定原因。

如果您知道备选路径,则不需要where的
/R
选项,以下批次应该可以:

@echo off
Set "PRG=C:\Program Files"
Set "MSS=Microsoft SQL Server"
Set "Exe=bcp.exe"

Set "Search=%PRG%\%MSS%;%PRG% (x86)\%MSS%:%Exe%"
for /f "delims=" %%i in ('where "%Search%"') do set output=%%i
echo %output%

不可能的。给定的脚本包含绝对路径
where/r“C:\Prog…
。因此,无论从何处启动,它都必须给出相同的结果。
类型“L:\Shared Scripts\findBCP.bat”是否与
类型“C:\Test\findBCP.bat”
相同?通过
where/r“L:\Shared Scripts”扩展脚本如何“bcp.exe
?@JosefZ脚本与保存为bat文件并从此目录调用的脚本完全相同。L驱动器是位于另一台服务器“\\serverShare\share\share\Shared Scripts”上的映射网络共享,这是可能的,因为我正在获取它lol@aschipfl-添加一个where检查无效该路径中没有BCP.exe,因为您的问题似乎已解决,并且无论如何无法重现,我建议您删除您的问题,因为它可能对未来读者没有帮助……这是怎么考虑这两个路径的呢?看起来您参数化了x86路径,但从未查看过非x86路径?@S.G.查看var搜索,它将两个路径合成,并用分号分隔。看哪里?语法方面。啊,很好,它很好地缩小了东西。