如果批量问题怎么办?

时间:2014-08-19 13:07:36

标签: windows batch-file

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

2 个答案:

答案 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