批处理文件在windows 10升级中不起作用

批处理文件在windows 10升级中不起作用,windows,batch-file,path,Windows,Batch File,Path,我有一个批处理文件,它运行ajaxMinfier并压缩我的css和jquery。 我的xml文件使用相对路径。现在一切都在Windows7中运行,但最近我升级到了Windows10,现在我的批处理文件失败了。 如果我双击批处理文件,它将无法在同一文件夹中找到我的xml文件 我有这样的 compress.bat css.xml jquery.xml 我总是在批处理文件中给出ajaxMinifier的完整路径,这很好。它正在运行,但在xml中提供文件的相对路径。原因是,我有多个副本的网页在不同的阶

我有一个批处理文件,它运行ajaxMinfier并压缩我的css和jquery。 我的xml文件使用相对路径。现在一切都在Windows7中运行,但最近我升级到了Windows10,现在我的批处理文件失败了。 如果我双击批处理文件,它将无法在同一文件夹中找到我的xml文件

我有这样的

compress.bat
css.xml
jquery.xml
我总是在批处理文件中给出ajaxMinifier的完整路径,这很好。它正在运行,但在xml中提供文件的相对路径。原因是,我有多个副本的网页在不同的阶段

如果我使用命令行运行批处理文件,一切正常,但我当然在运行批处理文件的文件夹中。如果在windows中单击批处理文件,它甚至找不到与批处理文件位于同一位置的xml文件

我在结尾处暂停了一下,我怀疑原因是它在C:中查找我的xml文件,而不是批处理文件的位置

这是我的批处理文件

::Work
E:\Utilities\AjaxMinifier\AjaxMinifier.exe -JS -CLOBBER -xml jquery.xml
E:\Utilities\AjaxMinifier\AjaxMinifier.exe -CSS -CLOBBER -xml css.xml


pause > nul
暂停通常被注释掉,但我需要看看发生了什么

这是我的css xml文件

<root>
<output path="..\httpdocs\css\min\my.css">
    <input path="..\httpdocs\css\raw\buttons.css"/>
    <input path="..\httpdocs\css\raw\menustyles.css"/>
  </output>
</root>

还有我的jquery xml文件

<root>
  <output  path="../httpdocs\js\min\mutual.js">
    <input path="../httpdocs\js\raw\table_scroll.js"/>
    <input path="../httpdocs\js\raw\mutual.js"/>
    <input path="../httpdocs\js\raw\menudrop\menu_jquery.js"/>
  </output>
</root>


谁能告诉我如何通过双击批处理文件将其加载到同一文件夹中的xml文件中?我不能使用固定路径。

谢谢Stephan。我本来会投你一票,但你的评论旁边没有箭头。所以我不能。不确定是否添加了注释而不是答案。然而,如果你回答正确,我会投你一票,因为你给出了最好的答案

你的答案本身不起作用,但它引导我找到了正确的答案。您添加的行是正确的,但需要另一行才能工作

setlocal
cd /d %~dp0

谢谢你,斯蒂芬。我本来会投你一票,但你的评论旁边没有箭头。所以我不能。不确定是否添加了注释而不是答案。然而,如果你回答正确,我会投你一票,因为你给出了最好的答案

你的答案本身不起作用,但它引导我找到了正确的答案。您添加的行是正确的,但需要另一行才能工作

setlocal
cd /d %~dp0

cd/d%~dp0
将工作目录更改为批处理文件所在的文件夹。(双击批处理文件时,其工作目录为
%windir%\system32

cd/d%~dp0
,将工作目录更改为批处理文件所在的文件夹。(双击批处理文件时,其工作目录为
%windir%\system32

cd/d%\dp0
,将工作目录更改为批处理文件所在的文件夹。(双击批处理文件时,其工作目录为
%windir%\system32
cd/d%\dp0
,将工作目录更改为批处理文件所在的文件夹。(双击批处理文件时,其工作目录为
%windir%\system32
setlocal
不是原因;我的评论中有一个输入错误(
%\dp0
而不是
%~dp0
),可能是您用第二个版本直观地更正了它。您完全正确。我已经删除了setlocal,它仍然有效。顺便说一句,这不是直觉。根据你的答案,我又在谷歌上搜索了一些,并找到了代码,但如果你没有给我错误的答案,我就不会找到正确的答案。无论如何,谢谢你。
setlocal
不是原因;我的评论中有一个输入错误(
%\dp0
而不是
%~dp0
),可能是您用第二个版本直观地更正了它。您完全正确。我已经删除了setlocal,它仍然有效。顺便说一句,这不是直觉。根据你的答案,我又在谷歌上搜索了一些,并找到了代码,但如果你没有给我错误的答案,我就不会找到正确的答案。无论如何,谢谢你。