Articles of for循环

用于循环多个文件夹中的文件 – bash shell

我需要在for循环中有许多目录中的文件。 至于现在,我有以下代码: for f in ./test1/*; … for f in ./test2/*; … for f in ./test3/*; … 在每个循环中,我正在做同样的事情。 有没有办法从多个文件夹中获取文件? 提前致谢

linux shell脚本中for循环的语法

我有一个执行for循环的问题。 我执行我的脚本时出现此错误 test1.sh:2:语法错误:不适合循环variables 我不明白这个错误。 这是我的脚本 #!/bin/bash for (( c=1; c<=5; c++ )) do echo "Welcome $c times…" done 任何一个可以告诉我语法for循环在sh(在Ubuntu中,它链接到Dash shell)在Ubuntu的shell?

Windows蝙蝠:目录中的循环文件

我正在使用Windows。 我在一个目录的子目录中有很多jpg文件。 我不知道目录的架构,这意味着我不知道子目录有多less级别。 我需要做的是根据path处理jpg文件。 这里是一个例子: dir |—sub dir1 | |—–sub dir11 | |—–a.jpg | |—–b.jpg |—sub dir2 |—–c.jpg |—–d.jpg 所以我需要执行如下命令: process.bat C:\dir\sub dir1\sub dir11\a.jpg C:\dir\sub dir1\sub dir11\b.jpg process.bat C:\dir\sub dir2\c.jpg C:\dir\sub dir2\d.jpg 我不知道如何写这样一个蝙蝠文件,特别是一个蝙蝠处理path包含空格。 我不知道空间是否会造成一些麻烦。 我试过如下,但它不工作: @Echo off&SetLocal EnableExtensions EnableDelayedExpansion For /d %%A in (C:\dir\*) Do ( Set "Files=" For /f %%B in ("%%~fA\*.jpg") Do Set […]

批文件FOR / F标记

任何人都可以请解释如何以下代码工作,逐行。 我真的迷路了 我一直在试图学习如何使用FOR命令,但我不明白这一点。 @echo off for /f "tokens=* delims= " %%f in (myfile) do ( set line=%%f call :processToken ) goto :eof :processToken for /f "tokens=1* delims=/" %%a in ("%line%") do ( echo Got one token: %%a set line=%%b ) if not "%line%" == "" goto :processToken goto :eof

使用EnableDelayedExpansion时,修改variables的语法是正确的

我希望能够做%〜p只能看到文件的path。 但是我不能得到正确的语法在循环中使用它(使用EnableDelayedExpansion) 这是我的代码: @echo off set "dir1=%TMP%\opt" set "dir2=c:\opt" set "empty=" setlocal EnableDelayedExpansion for /f %%F in ('dir /a:-d /s /b /r "%dir1%"') do ( set "file_path=%%F" set "file_name=%%~nF" set "new_path=!file_path:%dir1%=%dir2%!" set "new_path=!new_path:!file_name!=%empty%" //This command is problematic echo !new_path! ) endlocal 任何方式对我来说呢?

如何使用命令提示符或Power Shell为多个文件夹中的多个文件创build符号链接?

我有两个主文件夹在不同的驱动器中有很多的子文件夹。 必须为第一个文件夹中的所有文件创build符号链接。 C:\folderC>tree /f C:. ├───folder1 │ file1.txt │ file3.txt │ └───folder2 file1.txt file3.txt D:\folderD>tree /f D:. ├───folder1 │ file2.txt │ └───folder2 file2.txt 结果使用2个命令: C:\>mklink C:\folderC\folder1\file2.txt D:\folderD\folder1\file2.txt symbolic link created for C:\folderC\folder1\file2.txt <<===>> D:\folderD\folder1\file2.txt C:\>mklink C:\folderC\folder2\file2.txt D:\folderD\folder2\file2.txt symbolic link created for C:\folderC\folder2\file2.txt <<===>> D:\folderD\folder2\file2.txt C:. ├───folder1 │ file1.txt │ file2.txt │ file3.txt │ └───folder2 file1.txt […]

如何安全地回应文字string“%I”?

如何以安全的方式回显string%I ,而不pipeecho命令行是否放在for %I循环中? 例如,在命令提示符( cmd )中: >>> rem // `echo` is outside of `for` scope, so this works: >>> echo %I %I >>> rem // `echo` is inside of `for` scope, so `%I` is resolved: >>> for %I in (.) do @echo %I . >>> rem // escaping does not help, `%I` is still resolved: […]

批量退出for循环

如果计数j达到0我不想离开for循环。 set /aj=3 for /R c:\dsd_imports\ad_and_deal %%i IN (*.*) DO ( MDI_import_ad_command.bat C:\DSD_IMPORTS\AD_AND_DEAL\%%~nxi MOVE %%ic:\dsd_imports\ad_and_deal\in_process set /aj=j-1 if j == 0 break )

FOR循环将每个迭代在同一行中用相同的前缀分组

我以一个练习题为例,将其作为一个练习来讨论: 合并pdf文件和相关的文件名 在这个问题上,我试图回答部分成功,因为它已经用更多的信息更新了这个问题。 总结这个问题是一个包含以下内容的文件夹: 123456_ABCD.pdf 123456_EFGH.pdf 123456_IJKL.pdf 111111_ABCD.pdf 111111_EFGH.pdf 222222_IJKL.pdf 222222_WXYZ.pdf 而在一个命令我想得到这样的输出: 123456_ABCD.pdf, 123456_EFGH.pdf, 123456_IJKL.pdf 111111_ABCD.pdf, 111111_EFGH.pdf 222222_IJKL.pdf, 222222_WXYZ.pdf 这里的每一行都假设代表在命令中find的相同前缀 这是我的尝试: @echo off ( copy nul 123456_ABCD.pdf copy nul 123456_EFGH.pdf copy nul 123456_IJKL.pdf copy nul 111111_ABCD.pdf copy nul 111111_EFGH.pdf copy nul 222222_IJKL.pdf copy nul 222222_WXYZ.pdf ) setlocal enabledelayedexpansion :: set _pdffiles= set _prevfiles= for /f […]

这是在Windows批处理的错误?

我发现批处理脚本的一个奇怪的问题,我似乎无法解释。 也许只是因为我不太了解批处理工作的基础,但是这里是一个例子batch file(test.bat): @echo off FOR /F "tokens=1*" %%i in ("%*") DO ( echo %%j ) 如果我这样称呼它: test.bat ab a,b "a,b" 我得到这个作为我的输出: a,b "ab" 为什么第二个逗号被剥离? 如果我像这样逃避逗号: test.bat ab a,b "a^,b" 我得到正确的输出: a,b "a,b" 这几乎就像','被for循环认为是一个分隔符,但是当我看着FOR /?时,唯一的默认delim就是空白。 逗号不被列为分隔符。 如果我明确指出delim是一个空格,我仍然会得到这个行为。 如果我逃避报价,我仍然得到这种行为。 不pipe怎样,如果逗号是分号,那么第一个逗号也应该被剥离出来吗? 奇怪的是,如果你尝试在for循环中使用'usebackq',你会得到相反的结果。 第一个逗号被删除,第二个被保留: ab "a,b" 为什么我必须在引号内跳过所有逗号才能工作? 是否有一些whindows规则我失踪或者它只是在Windows批处理脚本错误?