- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想运行一个.bat脚本来制作一个文件,并使用与它所在的文件夹相同的名称进行保存。我希望它从一个地图开始并遍历子地图。
我从下面的代码开始,并在其中一个子图中运行它。可行,我得到一个带有子图名称的文件。
FOR /D %%I IN ("%CD%") DO SET _LAST_SEGMENT_=%%~nxI
ECHO Last segment = "%_LAST_SEGMENT_%"
echo.>%_LAST_SEGMENT_%.mp4
pause
%CD%
指的是
.bat
文件所在的父地图(子文件夹),而不是我的子地图(video1,video2等)。
Set Base=C:\Video\subfolders
FOR /R "%Base%" %%F IN (.) DO (
PushD "%%F"
FOR /D %%I IN ("%CD%") DO SET _LAST_SEGMENT_=%%~nxI
echo %CD%
ECHO Last segment = "%_LAST_SEGMENT_%"
echo.>%_LAST_SEGMENT_%.mp4
PopD
)
Pause
C:\Video\subfolders>Set Base=C:\Video\subfolders
C:\Video\subfolders>FOR /R "C:\Video\subfolders" %F IN (.) DO (
PushD "%F"
FOR / %I IN ("C:\Video\subfolders") DO SET _LAST_SEGMENT_=%~nxI
echo C:\Video\subfolders
ECHO Last segment = ""
echo. 1>.mp4
PopD
)
C:\Video\subfolders>(
PushD "C:\Video\subfolders\."
FOR / %I IN ("C:\Video\subfolders") DO SET _LAST_SEGMENT_=%~nxI
echo C:\Video\subfolders
ECHO Last segment = ""
echo. 1>.mp4
PopD
)
C:\Video\subfolders>SET _LAST_SEGMENT_=subfolders
C:\Video\subfolders
Last segment = ""
C:\Video\subfolders>(
PushD "C:\Video\subfolders\video1\."
FOR / %I IN ("C:\Video\subfolders") DO SET _LAST_SEGMENT_=%~nxI
echo C:\Video\subfolders
ECHO Last segment = ""
echo. 1>.mp4
PopD
)
C:\Video\subfolders\video1>SET _LAST_SEGMENT_=subfolders
C:\Video\subfolders
Last segment = ""
C:\Video\subfolders>(
PushD "C:\Video\subfolders\video2\."
FOR / %I IN ("C:\Video\subfolders") DO SET _LAST_SEGMENT_=%~nxI
echo C:\Video\subfolders
ECHO Last segment = ""
echo. 1>.mp4
PopD
)
C:\Video\subfolders\video2>SET _LAST_SEGMENT_=subfolders
C:\Video\subfolders
Last segment = ""
C:\Video\subfolders>(
PushD "C:\Video\subfolders\video3\."
FOR / %I IN ("C:\Video\subfolders") DO SET _LAST_SEGMENT_=%~nxI
echo C:\Video\subfolders
ECHO Last segment = ""
echo. 1>.mp4
PopD
)
C:\Video\subfolders\video3>SET _LAST_SEGMENT_=subfolders
C:\Video\subfolders
Last segment = ""
C:\Video\subfolders>Pause
Press any key to continue . . .
setlocal enabledelayedexpansion
,但无法正常使用。
最佳答案
您似乎想要以下内容:
@echo off
for /F "delims=" %%I in ('dir "C:\Video\subfolders\*" /AD-H /B /S 2^>nul') do (
pushd "%%I"
echo/>"%%~nxI.mp4"
popd
)
pushd
和
popd
命令:
@echo off
for /F "delims=" %%I in ('dir "C:\Video\subfolders\*" /AD-H /B /S 2^>nul') do (
echo Directory is: %%I
echo/>"%%I\%%~nxI.mp4"
)
cmd.exe /C
开头的单独命令进程中运行,并在后台命令行中运行:
dir "C:\Video\subfolders\*" /AD-H /B /S 2>nul
/B
,
/S
,/AD-H
(属性目录且未隐藏)而导致的非隐藏目录的
C:\Video\subfolders
及其所有子目录中的C:\Video\subfolders
的整个目录树中找到任何目录条目时处理
STDERR 。
2>nul
的解释。当Windows命令解释器在执行命令
FOR 之前执行Windows命令行解释程序处理的命令行时,重定向操作符
>
必须在
FOR 命令行上使用脱字符号
^
进行转义,以将其解释为文字字符在背景中。
dir
。目录名可以有空格,因此
I
用于定义一个空的字符串定界符列表,从而导致始终将捕获的
DIR 输出中当前处理的完整合格目录名分配给循环变量
delims=
。
I
引用,它是最后一个反斜杠之后的字符串。目录名称也可以包含点,例如
%%~nxI
或以点开头(例如
folder.name
),尽管两者在Windows上都是不常见的。因此,有必要使用
.FolderName
(名称和扩展名),而不仅仅是
%%~nxI
,因为
。FOR 不会验证
%%~nI
引用的字符串是否是文件名或目录名。
%%I
(或%%~nI
),则\
引用最后一个
/
(或
\
与Linux路径兼容性首先由
\
替换)之间的字符串
。如果已经确定了名称字符串的开头,则最后一个点,如果没有点,则最后一个点。
/
引用以最后一个目录分隔符之后找到的最后一个点开头的字符串。因此,分配给循环变量
.
的字符串一定不能是实际存在的文件/文件夹的文件/文件夹名称,尽管在这种情况下是这样。如果
%%~xI
包含以
I
(或
%%~nxI
)结尾的字符串,则
I
将为空字符串。
\
中运行时通过命令
SET 输出帮助所说明的那样。
/
set /?
dir /?
echo /?
for /?
popd /?
引用的环境变量。 Windows命令处理器
pushd /?
在第一次执行外部
FOR 之前,将整个命令块从第一个
FOR 的
%variable%
解析为匹配的
cmd.exe
。请参见
How does the Windows Command Interpreter (CMD.EXE) parse scripts?。在此预处理阶段,此命令块内的所有
(
引用已被引用的环境变量的当前值替换。因此,最终迭代外部
FOR 所执行的代码不再包含任何
)
环境变量引用,因为在执行命令行之前,可以在
%variable%
输出的命令行上看到它。
关于loops - 为什么%CD%在PushD的for循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53632541/
我正在尝试创建一个非常简单的批处理脚本,其中对于复制到暂存目录的每个文件,脚本都会将其工作目录更改为该暂存目录以执行一些工作: pushd C:\Shared\ for /r %%f in (*.dl
每次我使用 pushd 或 popd 时,它都会将堆栈打印到标准输出。如何不这样做? 我不想每次都执行 pushd >/dev/null 因为我有很多脚本互相调用。 也许一个很好的覆盖就可以做到,但我
每次我使用 pushd 或 popd 时,它都会将堆栈打印到标准输出。如何不这样做? 我不想每次都执行 pushd >/dev/null 因为我有很多脚本互相调用。 也许一个很好的覆盖就可以做到,但我
我在这里和其他网站上阅读了很多关于 pushd 的问题和答案,其中绝大多数都提到了 UNC 路径的问题。但是,我遇到了一个不同的问题,我还没有看到任何提示。 使用 Windows 10 x64 Ent
我正在尝试使用 pushd 进入目录 #!/bin/bash function cloneAll { [ -d ~/mapTrials ] || mkdir ~/mapTrials p
如何使用反引号运行 pushd 和 popd? 每当我在反引号中运行 pushd/tmp 时,我都会得到一个错误: "No such file or directory - pushd /tmp" 最
我不知道是否有有效的方法来做到这一点。但是,一直想看看它是否可能。 我知道 pushd、popd 和 dirs 对于许多事情都很有用,例如在您最近访问过的目录之间进行复制。 但是,有没有一种方法可以保
我有一个很棒的大脚本,它完全依赖于 PUSHD。然而突然当我输入pushd \\server1\dir1我越来越: C:\Documents and Settings\userNameHere>pus
如何将 pwd 的输出通过管道传输到 pushd,以便我可以在当前目录上使用 pushd。我试过了 pwd | pushd 还有很多其他组合,但似乎没有任何效果。 最佳答案 pushd . 也有效 关
KSH 是否有等效于 bash pushd/popd 的内置命令? 对于那些不知道 bash 中的 pushd 和 popd 做什么的人,这里是手册页中的描述 pushd [-n] [dir]
我在 make 文件中执行以下操作 pushd %dir_name% 我得到以下错误 /bin/sh : pushd : not found 谁能告诉我为什么会出现这个错误?我检查了我的 $PATH
我在尝试从共享网络驱动器获取文件时收到“不支持 UNC 路径”错误。 我的研究告诉我 pushd 和 popd 可能有帮助,但我不知道如何正确使用它们。 pushd 和 popd 有哪些好的用法示例?
当使用这两个命令优于 cd 和 cd - 时,pushd 和 popd 的实际用途是什么? 最佳答案 实际用途是你可以建立一堆目录,形成你去过的地方的踪迹,只需替换cd即可。与 pushd . 然后,
我在我的 bash 脚本中遇到了一些麻烦来做一些适当的“pushd/popd 清理”。也就是说:如果我执行了几次 pushd,我想确保在 exit 之前执行相同数量的 popd。 但是,我注意到 pu
我正在尝试弄清楚如何在组件驻留在网络路径上的两个不同驱动器上的情况下安装一些程序。但是,每当我使用 pushd\\xyz\c$ 时,我都会得到一个映射驱动器,这意味着我无法使用任何有关使用的知识,例如
我正在尝试使用 https://github.com/rs/pushd 作为推送通知服务器。 每当我尝试添加新订阅者时,服务器都会崩溃并显示以下堆栈跟踪: /home/ec2-user/push_se
我有一个 Windows 批处理文件,它输出目录路径,例如: @echo c:\windows 我想将这个字符串“c:\windows”传递给 PUSHD 命令。我试过这个: path.bat | P
我试图从一个共享驱动器另一个共享驱动器复制今天修改的文件。 但是当我执行批处理文件时,它显示以下错误。 cmd 不支持 UNC 路径作为当前目录 脚本如下 @echo off Set Photosrc
有没有办法在 Dockerfile 中使用 pushd/popd 命令?如果可能的话,它会使一些安装脚本变得更容易。 最佳答案 可以做到,但你的图像必须有 bash 并且所有命令必须在同一个 RUN
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是一名优秀的程序员,十分优秀!