我有一个简单的脚本,可以在Notepad ++中启动XML文件路径
不幸的是,某些文件的生成文件路径不正确,我正在尝试在脚本中对其进行补偿(理想的修复方法显然是解决了路径问题,但目前这不是一个选项)。 / p>
这就是我所拥有的,为代码道歉,我对批处理脚本很新...
set /p filePath= Enter file path:
if "%filePath%" == "1" goto xmlMenu
else if "%filePath%" == "file://path/of/file/*/*/*/*/A/*.XML"
set filePath="file://path/of/file/*/*/*/*/B/*.XML"
goto openXML
我希望filePath变量继承用户输入的其余路径,但目前它使用通配符显式设置路径。我已经说明条件的方式似乎也存在问题,因为无论else条件如何,它似乎都将路径设置为/B/*.XML。
答案 0 :(得分:0)
有很多错误,但正如你所说,你是新的。
首先,如果您输入的文件路径为“1”,那么您应该安全抵达xmlmenu。
下一行会产生错误,因为使用了else子句
(
必须与if
) else (
必须全部位于同一物理行(不一定与if
相同)无论如何,else
是多余的。如果条件不为真,则不会发生跳转,因此将执行下一个语句行。
if
... == ...如果左侧的字符串与右侧的sring相同,则为true,因此您需要输入的字符串与{{1}完全相同} file://path/of/file/*/*/*/*/A/*.XML
为真。 action-statment也必须与if
位于同一物理行上,因此这是语法错误的第二个来源。
然后执行if
,将该着名字符串(引号)分配给变量set
。然后我们去了filepath
。
请注意openxml
是Windows中的路径分隔符; \
是一个开关说明符。
现在 - 如果您要解释您想要做什么 - 也许输入一个文件名,该文件名可能位于目录结构中的某个位置,如果找到了,则将 what?分配给变量filepath。一两个例子是个好主意。
这应该有一个可用的系统。数字检查不完整,但足够了。对于决心打破它的用户,我没有防弹......
/
显然,更改路径前缀以适应。
对于@ECHO OFF
SETLOCAL
:again
SET "filepath="
set /p filePath="Please enter filepath as yyyymmdd : "
IF NOT DEFINED filepath GOTO :EOF
if "%filePath%" == "1" goto xmlMenu
:: test to see whether entered data is numeric
SET /a "filepath=%filepath%" 2>nul
IF %filepath%==0 echo invalid entry - numerics only, please&GOTO again
IF %filepath% lss 19800100 GOTO badymd
IF %filepath% gtr 20991231 GOTO badymd
SET filepath=\path\prefix\%filepath:~0,4%\%filepath:~4,2%\%filepath:~6,2%
:: This is just to show the filepath constructed
ECHO filepath is "%filepath%"
IF NOT exist "%filepath%\A\*.xml" ECHO "%filepath%\A\*.xml" does NOT exist&GOTO again
IF NOT exist "%filepath%\B\*.xml" ECHO "%filepath%\B\*.xml" does NOT exist&GOTO again
SET "filepath=%filepath%\B\*.xml"
goto openXML
:badymd
ECHO invalid entry - 4 digits FOR year, 2 FOR month an 2 FOR day, please
GOTO again
:xmlmenu
ECHO AT xmlmenu&GOTO :eof
:openxml
ECHO AT openxml with filepath="%filepath%"&GOTO :eof
GOTO :EOF
的输入,将构建路径20140220
。然后检查并....\2014\02\20
- 我只能假设两者都必须存在才能继续this +\B\*.xml
。