我希望能够检查某个文件夹(FolderA)是否存在,如果存在,则显示一条消息,然后退出批处理文件.
如果FolderA不存在,我想检查是否存在另一个文件夹(FolderB).如果FolderB不存在,则应显示一条消息并创建该文件夹,如果FolderB存在,则应显示一条消息,说明如此.
有没有人对我可以在记事本上使用的代码有任何想法来创建批处理文件以允许我这样做?
所有这些都需要在一个.bat文件中完成.
有没有办法找出文件是否是目录?
我在变量中有文件名.在Perl中,我可以这样做:
if(-d $var) { print "it's a directory\n" }
Run Code Online (Sandbox Code Playgroud) 我正在编写Windows批处理脚本,我有一个参数或变量,其中包含使用短8.3名称的路径.路径可能表示文件或文件夹.
如何将8.3路径转换为长名称路径?至少我希望能够简单地打印出完整的长名称路径.但理想情况下,我想安全地将长名称路径转换为新变量.
例如,给定路径C:\PROGRA~1\AVASTS~1\avast\BROWSE~1.INI,我想返回C:\Program Files\AVAST Software\avast\BrowserCleanup.ini.
作为批处理爱好者,我最感兴趣的是只使用本机Windows命令的纯批处理解决方案.但是,混合使用PowerShell和JScript等其他本机脚本工具也是可以接受的.
注意: 我发布了自己的答案.我在网上搜索,并惊讶地发现这个主题很少.我开发了多种工作策略,并认为其他人可能会对我发现的内容感兴趣.
我正在尝试在Windows XP中编写一个批处理文件,它接受一个完全限定的路径名并输出8.3短名称版本...
@echo off
echo "%~s1"
Run Code Online (Sandbox Code Playgroud)
我遇到过一个特殊情况,它输出的路径和文件不正确......
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2"
Run Code Online (Sandbox Code Playgroud)
请注意,上述输出("C:\ DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62 [1] .ja2")不存在.但是,如果从该输出中删除".JA2M34V\62 [1]"部分,则生成的字符串将是原始输入文件的有效路径.
这似乎是在文件名中使用括号([])的问题.如果我在同一目录中创建文件62.ja2,输出将是正确的...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2"
Run Code Online (Sandbox Code Playgroud)
这是Windows中的错误吗?有没有人知道是否有一个解决方法允许批处理文件正确处理此文件名?
我正在创建一个bat脚本,我应该检查变量是否包含目录的有效绝对路径,以及另一个变量是否包含Windows 8及更高版本的文件的有效名称.
那么,我该如何进行这些检查呢?
谢谢
再见