Hay我尝试在bash中制作一些if语句,但是我无法让它在很多例子中运行如何在stackoverflow中执行它但是我找不到任何对我有用的事情
我在这里试试“if(%% F =”\ A“或%% F ==”\ B“)(”检查%% F是否包含“\ A”或“\ B”文件夹然后继续白色循环其他跳转到下一个
@echo off
setlocal enabledelayedexpansion
if "%CD:~-1%" == "\" (
set PREFIX=%CD:~0,-1%
) else (
set PREFIX=%CD%
)
for /f "delims=" %%F in ('dir /s/b') do (
if (%%F = "\A" or %%F == "\B") (
set N=%%~dpF%%~nF
set N=!N:%PREFIX%=!
if not "!N:~1,4!" == "root" (
set N=%PREFIX%\root!N!
if not exist "!N!" (
mkdir "!N!"
)
)
)
)
pause
/ Mvh Whiskey
答案 0 :(得分:0)
如果[ - 陈述]
然后是dothisandthat
网络
http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
你真的是说" bash" (Linux)或批处理(Windows)?
答案 1 :(得分:0)
您不能使用equallity运算符来测试是否可以在另一个字符串中找到字符串。
如果启用了延迟扩展,并且路径/文件名中包含感叹号,则字符串替换可能会出现问题。
枚举文件的相对路径更容易(xcopy
仅用于列出文件),过滤掉" root"中的非必需元素。文件夹,过滤只检索所需文件夹中的文件,然后检索其余文件......
已修改以适应评论
@echo off
setlocal disabledelayedexpansion
for %%a in ("%cd%\root") do set "root=%%~fa"
for /f "tokens=* delims=.\" %%a in (
'xcopy . "%temp%\%random%%random%" /s /l /i ^
^| findstr /lvi /c:".\\root\\" ^
^| findstr /ri /c:"\\[a-z]\\.*"'
) do for %%b in ("::\%%a") do (
if not exist "%root%%%~pb%%~nb" echo mkdir "%root%%%~pb%%~nb"
)
pause