我想拆分字符串(有路径)\并在变量中取最后一个文件夹名称.请帮忙.
例如
mypath = D:\ FOLDER1\FOLDER2\FOLDER3 \
我想在变量中使用FOLDER3.
我尝试使用下面的命令,如果最后一个字符不是\:
for %f in (C:\FOLDER1\FOLDER2\FOLDER3) do set myfolder=%~nxf
Run Code Online (Sandbox Code Playgroud)
如果最后一个字符是,则无效 \
如果使用变量,它也不起作用: for%f in(%mypath%)do my myderder =%~nxf
我有一个批处理文件,可以在本地或在构建服务器上运行,以做一些有趣的工作.在本地计算机上,我希望@ECHO OFF您的控制台没有充满调试字符串.在构建服务器上,我宁愿@ECHO ON这样可以调查失败.
如果存在特殊的环境变量(TEAMCITY_PROJECT_NAME),则可以确定构建服务器上下文.所以,我以为我可以做点什么
IF DEFINED TEAMCITY_PROJECT_NAME @ECHO ON ELSE @ECHO OFF
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,我得到的IF声明与其他一切相呼应......任何想法?
获取子串的位置,
Set str1=This is Test string
Set sstr=Test
Run Code Online (Sandbox Code Playgroud)
在这里,我需要获得"测试"(8)的位置.
谢谢...
好的,这里是我的CMD窗口的复制粘贴
C:\Documents and Settings\Developer>cd /d "D:\"
D:\>cd /c "C:\"
The filename, directory name, or volume label syntax is incorrect.
D:\>
Run Code Online (Sandbox Code Playgroud)
当我在C盘中运行cd/d"D:\"时它工作正常,但是当我在D盘中运行cd/c"C:\"时我得到一个错误
那么如何将目录更改回C盘?
编辑:
这是我的CMD窗口更简单的"复制粘贴"
C:\>cd /d "D:\"
D:\>cd /c "C:\"
The filename, directory name, or volume label syntax is incorrect.
D:\>
Run Code Online (Sandbox Code Playgroud)
是不是因为它不工作的场景......
我写了一个简单的.bat文件,一次询问用户是/否问题.现在我想为它添加一个超时 - 让我们说10s.有一个简单的方法吗?
我的来源到目前为止:
SET /P ANSWER=Do you want it (Y/N)?
IF /i {%ANSWER%}=={y} GOTO :yes
IF /i {%ANSWER%}=={yes} GOTO :yes
GOTO :no
:yes
@echo Yeah, it will be done.
GOTO :continue
:no
@echo Nope, it will not happen.
GOTO :continue
:continue
@echo And on we go
Run Code Online (Sandbox Code Playgroud) 我有一个简单的批处理文件,它将遍历所有*Test.htm文件并复制它们.某些文件将包含我不想复制的字符串.
FOR /R "C:\" %%g IN (*Test.htm) DO (
echo %%g
)
Run Code Online (Sandbox Code Playgroud)
我想要的伪代码:
@echo off
FOR /R "C:\" %%g IN (*Test.htm) DO (
if %%g contains "Exclude" do nothing
else
copy...
)
Run Code Online (Sandbox Code Playgroud) This is my first question and I'm not very experienced using batch files so hope someone can help.
I want to find the last directory created using a batch file and have tried:
FOR /f "tokens=*" %%A in ('dir "%latestdirectory%" /AD-h /B /o-d') do (set recent=%%A)
Run Code Online (Sandbox Code Playgroud)
but this result keeps returning the oldest directory not the most recent one.
Still trying to pick this up in batch.
我需要一个 bat 文件来获取 Windows 系统中 C:\ 驱动器的总空间和可用空间,以 GB(千兆字节)为单位,并创建一个包含详细信息的文本文件。
注意:我不想使用任何外部实用程序。
我有4个批处理文件,假设a.bat,b.bat,c.bat和d.bat.现在调用这些批处理文件的方式是a.bat调用b.bat,b.bat调用c.call等等.
如果我在任何批处理文件中出现任何错误,我想通过说出错误退出整个程序,并提出哪个批处理文件有问题.我的问题是,我该怎么做?
我在这里使用exit /b但它只从当前的批处理文件中退出并从那里调用后移回批处理文件:
@echo. off
echo. this is batch 'a'
call b.bat
Run Code Online (Sandbox Code Playgroud)
@echo. off
echo. this is batch 'b'
call c.bat
Run Code Online (Sandbox Code Playgroud)
@echo. off
echo. this is batch 'c'
Run Code Online (Sandbox Code Playgroud)
我在批处理'C'中出错 - 它应该报告错误并退出,但它会以某种方式回到批处理'B'.有关如何退出嵌套批处理文件的任何想法?
我有很多来自电视节目的视频文件,我想为每个人添加字幕字幕.虽然我可以使用MKV合并几个文件,但这里文件的数量太多,单独做每个文件需要花费很多时间.我使用了以下内容:
for %x in (*.mp4) do mkvmerge "%x" -o "%~nx.mkv"
Run Code Online (Sandbox Code Playgroud)
但它只会mux mp4到mkv,而不是添加字幕(srt).我的视频文件和字幕对于每集都有相同的名称.谢谢!