微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用for循环和variablesreplace批量分割文件path

我已经search了很长一段时间没有运气让我的脚本工作。 我觉得我很亲密,但需要一点帮助。 我试图使用FOR循环recursion扫描“srcdir”(设置在我的脚本的开始处),然后一旦循环返回文件/path(%% f),那么我可以replace部分文件path(例如,对于C: rootpath des,C: rootpath src)。

我可以通过使用像这样的脚本来做到这一点:

set subdir=C:rootpathsrc set subdir=%subdir:src=des% echo %subdir%

然而,造成这种困难的原因是我的“srcdir”的根path可能会改变(例如:C: roothpath),在“srcdir”之后recursion的所有东西都可能改变(例如,C: rootpath中的文件夹“src” SRC)。 唯一不变的path是文件夹src和文件夹des(位于我运行我的batch file的同一目录中)。

因此,通过在前面的示例中使用相同的技术,我想使用FOR循环recursion地查找“srcdir”(%% f)中文件的完整path,并将文件夹“src”replace为文件夹“des”在pathstring中。 因此,我试图将“%% f”设置为一个variables(subdir),并使用variablesreplacereplace文件夹。

在.NET中的远程机器上获取环境variables的真实值

具有networking用户configuration文件的Windows 7上的Java属性“user.home”

Linux:获取日志文件的位置

在Windows中是否有任何表示“C: Documents and Settings”文件夹或C: Users文件夹的环境variables?

了解cmd shell中的variables

这是我目前的非工作脚本:

set srcdir=C:rootpathsrc for /r "%srcdir%" %%f in (*.txt) do ( set subdir=%%f set subdir=%subdir:src=des% echo %subdir% )

任何帮助将不胜感激! 谢谢!

打破条件variables死锁

Linux环境variables

将参数从Windows批处理脚本传递到PowerShell脚本

如何设置GAE_SDK_ROOT环境variables?

如何隐藏跨多个文件可见的全局variables?

您需要启用延迟扩展,因为您正在像for循环一样在代码块内分配和读取变量:

setlocal EnableDelayedExpansion set "srcdir=C:rootpathsrc" for /R "%srcdir%" %%F in ("*.txt") do ( set "subdir=%%~fF" set "subdir=!subdir:src=des!" echo(!subdir! ) endlocal

setlocal EnableDelayedExpansion命令启用延迟扩展; 它也将环境本地化,这意味着只有在执行endlocal或批处理文件终止之前,环境变量的更改才可用。

要实际使用延迟扩展,您需要用感叹号替换百分号,所以%subdir%变成!subdir! 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐