Windows shell 编程 ¬¬——将指定文件夹中的所有文件名输出到一个文件中

LTspice导入德州仪器SPICE模型的实用指南与常见问题解析 本文详细介绍了如何在LTspice中导入德州仪器的SPICE模型,包括模型文件获取、路径管理、导入步骤及常见问题解析。通过实用指南帮助工程师精确仿真电路性能,提升设计效率,重点涵盖了第三方模型的导入教程和最佳实践。 阅读详情
  问题分析:该任务主要有三个问题要解决1)如何存放指定的文件夹,2)如何遍历文件夹下的所有文件;3)如何将遍历的文件输出到文件中。下面就逐一来解决这些问题。
问题解决:
1. 如何存放指定的文件夹
在Shell中主要通过set 来存放环境变量。比如:Set var=xxxx。如果要删除该变量,则使用Set var=。在shell脚本中并没有类似数组这样的变量来帮助你存放数据。所以只能考虑将几个文件名放到一个string中,然后通过字符串识别来分别读出这些变量。示例如下:
SET DirList=C:/A C:/B C:/D
FOR /D %%i IN (%DirList%) DO ECHO %%i     (如直接在命令行输入,%%i应写为%i)
利用FOR语句就可以分别读出C:/A,C:/B和C:/D。此处也算是对FOR /D命令的一种灵活运用了。当然除此之外,也可以将变量存放于某文件,然后再循环读出,此处就不再详细说明了。
上面的语句还有些不完善的地方,那就是不支持文件名中出现空格的情况。比如C:/D E, 这种情况,命令只能识别出空格前的部分,造成文件名错误。避免这种情况的方法就是用引号把文件名包起来,如下所示:
SET DirList=”C:/A” “C:/B” “C:/D E”
 
2. 如何遍历文件夹中的所有文件呢?
解决了多个文件夹名存放的问题,现在需要遍历文件夹了。幸运的是shell为我们提供了一个命令可以方便的遍历完文件夹中的文件。命令如下:
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
于是很自然的想到了如下的语句:
SET  DirList = ”C: A” “C: B” “C: D E”
       
FOR   / D %%m IN  ( %DirList% )   DO   (
           
FOR   / R %%m %%i IN  ( * )   DO   ECHO  %%i
       
)
但不幸的是,这个脚本运行时出错。主要问题就是在第二个FOR语句中并不支持%%m, 在path位置上出现%%m让FOR有点不知所措。于是我们想到是否可以先把%%m赋值给一个变量,然后再将变量用于FOR语句。修改后结果如下:
SET  DirList = ”C: A” “C: B” “C: D E”
    
FOR   / D %%m IN  ( %DirList% )   DO   (
       
SET   DIR = %%m
       
FOR   / R % DIR % %%i IN  ( * )   DO   ECHO  %%i
    
)
很不幸,程序是可以运行,但结果为空。因为对于一个完整的复合语句,比如此处的循环嵌套,其中用到的变量已经在运行前全部替换成当前的环境变量的值,运行时环境变量的改变并不会影响程序中正在使用的那个值。由于在FOR运行前DIR还为定义,第二个FOR循环中自然找不到要遍历的目录了,所以就什么结果都不会有了。 J
这下可该如何是好呢?感觉有点走头无路了。只好再看看帮助了,发现shell提供了setlocal enabledelayedexpansion语句可以让程序打开延迟扩展特性,使用临时变量。就如同下面这个计算文件数目的程序:
@echo off
rem 打开延迟扩展特性
setlocal enabledelayedexpansion
set /a n=0
for /f %%i in ('dir /b') do (
     set /a n=!n!+1
     )
echo 当前目录下的文件和目录总数为:%n%
endlocal
pause
似乎看到救星了,于是改变了一下原来的代码得到:
SETLOCAL  enabledelayedexpansion
        SET  DirList = ”C: A” “C: B” “C: D E”
        FOR   / D %%m IN  ( %DirList% )   DO   (
            
SET   DIR = %%m
            
FOR   / R ! DIR ! %%i IN  ( * )   DO   ECHO  %%i
        )
       ENDLOCAL
结果出来了,但是不全,只能出来第一个目录的所有文件。似乎!DIR!的改变还是不能影响第二个FOR的执行。再一次对shell表示失望!
最后的努力,来自于cell神奇的力量,求助函数。
@ECHO   off
SET  DirList = ”C: A” “C: B” “C: D E”
FOR   / d %%m IN  ( %DirList% )   DO   (
CALL   :GenerateList  %%m
)
GOTO   :EOF
 
:GenerateList
FOR   / R %* %%i IN  ( * )   DO   (
     
ECHO  %%i
)
GOTO   :EOF
J 终于还是笑到了最后!
另外还有一个命令可以遍历所有的文件:DIR /A:-D /B /S
因此得到解法二:
@ECHO   off
SET  DirList = ”C: A” “C: B” “C: D E”
FOR   / d %%m IN  ( %DirList% )   DO   (
CALL   :GenerateList  %%m
)
GOTO   :EOF
:GenerateList
DIR  %*  / A:-D  / B  / S
GOTO   :EOF
 
3. 将结果输出了文件
在shell中一般采用重定向将结果输出到文件。可以考虑两种方式: append(>>), new(>);
考虑到使用append还需要在使用前清空文件,比较麻烦。因此还是使用后者。最终的结果如下:
@ECHO   off
CALL  : Transverse >. Data cachePackagesFile
GOTO   :EOF
 
:Transverse
SET  DirList = ”C: A” “C: B” “C: D E”
FOR   / d %%m IN  ( %DirList% )   DO   (
CALL   :GenerateList  %%m
)
GOTO   :EOF
 
:GenerateList
FOR   / R %* %%i IN  ( * )   DO   (
     
ECHO  %%i
)
GOTO   :EOF
 
总结:看似简单一个任务,结果却耗费了颇多的精力才得以最终解决。虽然传说中的shell是超简单的脚本编程,但却是是用法颇多诡异之处,特别是相对于高级的编程语言。不过鉴于shell和windows命令的紧密邦定,能够熟练掌握shell编程应该还是有不少好处吧。
 
参考:
1.Windows.Shell.Script.Programming.for.the.Absolute.Beginner
2.跟我学CMD实战系列: http://lifesinger.org/blog/?p=11 
3.中国DOS联盟  http://www.cn-dos.net/forum/ 
 
Opencv2.4.9源码分析——HoughCircles 图形可以用一些参数进行表示,标准霍夫变换的原理就是把图像空间转换成参数空间(即霍夫空间),例如霍夫变换的直线检测就是在距离-角度空间内进行检测。圆可以表示成: (x-a)2+(y-b)2=r2                   (1) 其中a和b表示圆心坐标,r表示圆半径,因此霍夫变换的圆检测就是在这三个参数组成的三维空间内进行检测。 原则上,霍夫变换可以检测任何形状。但复杂的形状需要的 阅读详情

相关推荐

记一次wireshark抓取QQ好友IP和火绒抓取微信IP

事情是这样的,,上个周,手机离奇的被盗,但没有关机,为了找回手机,粗学了一手QQ抓ip的手段。 这里我就直接做个演示,解析关键的点。 三种思路i. wireshark 抓取手机在线IPii 火绒抓取 微信在线接听IPiii 火绒抓取 微信在线不接听IP i. wireshark 抓取手机在线IP wireshark抓好友QQ的ip要求和对方打语音的时候要手机在线。 这里说一下,打语音和视频是直接能和对方建立连接,如果发文件,是直接发给腾讯的,抓不到包。 1.打开wireshark,通过电脑Tim给对方打语音

qq_29437513的博客 1万+

编程的基础知识

c的发展历史 void 类型 程序的入口成了**_tmain(),这个和 VC6.0 中的 main 函数类似, 在前面加个 t**,是为了对 unicode 项目的设置兼容,但它们都是程序执行的入口,其中 int argc 是程序的参数个数,_TCHAR* argv[]是参数数组。 **程序的编译与链接,**PE 格式 一个完整的 PE(Portable Executable)文件由 DOS 头,PE 文件头,块表,块 和**调试信息(调试版本有效)**组成 在 DOS 头部,以 e_

m0_67266787的博客 4172

LwIP TCP Client 解决长数据发送的困扰

问题描述 LWIP 的 TCP Client 发送数据可以调用 tcp_write() 函数,将数据储存在缓冲区里面,然后等待超时自动发送或者调用tcp_output()函数进行发送。 然而 tcp_write() 函数 需要发送的数据过长时,将无法发送,并返回 ERR_MEM。 tcp_write()函数解析 tcp_write()的函数代码很多,就不细看代码了, 先看tcp_write()的完整函数: err_t tcp_write(struct tcp_pcb *pcb, const void

tiantangmoke的博客 1万+

编程是什么?为什么建议零基础先学Python?附入门教程

为什么我们推荐大家从 Python开始学习编程语言? 为什么不是其他编程语言?

m0_59236602的博客 3102

从零开始使用matlab实现EKF-SLAM算法(含完整代码)

扩展卡尔曼滤波器同步定位与建图 (EKF-SLAM) 算法建立在 EKF 的基础上,集成了 EKF 的功能,可解决机器人技术中最具挑战性的问题之一:同时定位与建图 (SLAM)。 EKF-SLAM采用EKF方法来同时估计机器人的状态和周围环境的布局,而无需事先了解位置。 这种双重功能对于在未知环境中运行的自主系统至关重要,使它们能够在绘制区域地图时有效导航。 EKF-SLAM 算法一直是自动驾驶车辆和机器人系统开发的基石,为处理现实世界环境中固有的不确定性提供了一个强大的框架。

mjmmm的博客 6635

Mplus实战:如何用交叉滞后面板模型(CLPM)分析心理学纵向数据?

本文提供了在Mplus软件中应用交叉滞后面板模型(CLPM)分析心理学纵向数据的实战指南。文章详细拆解了CLPM的核心概念、Mplus语法框架,并涵盖从基础的两变量模型到多变量、潜变量建模的扩展,以及结果解读与常见陷阱规避,旨在帮助研究者利用这一经典工具有效探索变量间的动态预测关系。

weixin_29253711的博客 405

遍历文件夹所有文件,并获得其路径写入txt文件中

【代码】遍历文件夹所有文件,并获得其路径写入txt文件中。

qq_54372122的博客 641

MATLAB 与 STK 互联导出导弹轨迹及速度数据(csv导出)

本文介绍了如何通过 MATLAB 脚本连接 STK 提取导弹三维轨迹数据,并以 CSV 格式导出,包含以下关键内容:自动连接 STK 场景;获取所有导弹对象;提取 J2000 坐标系下的位置和速度;加入任务优先级与状态;导出为标准 CSV 文件;

weixin_52370774的博客 779

计算机科学与技术专业分析(非常详细)零基础入门到精通,收藏这一篇就够了

从网络安全专业学习的主要内容来看,包括linux运维、Python开发、渗透测试、代码审计、等级保护、应急响应、风险评估等。计算机科学与技术是一门涉及计算机理论、设计、开发、应用和管理的综合性学科,主要研究计算机的设计与制造,包含计算机软件、硬件的基本理论、技能与方法,以及计算机系统和软件的开发与维护、硬件的组装等。具体而言,大众所说的“会操作计算机”,也就是会使用一些现成的软件,而计算机专业的学生要远远高于一般的使用者,要研究如何更好地设计、制造计算机,更好地开发计算机的新系统、新软件、新功能等等。

leah126的博客 5951

VMware ESXi 系统里创建虚拟机,虚拟磁盘日志损坏,如何或者把数据备份?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1639

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 497

C语言遍历文件夹(Windows下),读取文件信息至结构体,然后保存至文件

参考资料: C语言遍历文件夹 首先首先根据参考资料中文章理解遍历文件夹的方法。 #include <stdio.h> #include <string.h> #include <dirent.h> void myfilerecursive(char *path); int main() { // 文件夹名称 char name[100000] = "D:\\test"; // printf("Enter path to list fi.

qq_38431321的博客 7813

【原理图PCB专题】Cadence17.4 PCB位号重排与反标

Cadence17.4 PCB位号重排与反标比Cadence16版本更简单一些,那到底如何操作?

一点硬件 1181

UNIX / Linux Convert DOS Newlines CR-LF to Unix/Linux Format

patch remove Bomb(^M) [code="java"] $ cat ~/bin/rmBom #! /bin/sh¬ ¬ #echo "uconv --remove-signature the $1 files"¬ ¬ ### uconv not availble¬ # find . -name "*.$1" \¬ # -exec uconv ...

marlgl 164

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

编程课主要学什么?电脑编程有哪些?(非常详细)从零基础到精通,收藏这篇就够了!

电脑编程有Java、BASIC C、C++、VB、VF、SQL、网页编程JSP、ASP、PHP等。电脑编程是指使用一种或多种计算机语言来编写程序的过程,这些程序可以让计算机执行特定任务,编程不仅限于软件开发,还包括网站构建、游戏设计、数据分析、人工智能等多个领域。编程语言是程序员与计算机沟通的桥梁。Python:Python是一种解释型的高级编程语言,因其简洁的语法和强大的功能被广泛应用于科学计算、数据处理、Web开发等领域。Python易于学习、可读性强,支持面向对象编程、函数式编程等多种编程范式。

Javachichi的博客 3309

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

shell 读取当前目录下所有文件/文件夹名称并导出方法

这将列出当前目录下的所有文件/文件夹名称并将结果保存到当前目录下的file.txt中。

C51076549507的博客 1553

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大学生编程入门指南:如何从零开始?

不同的编程语言各有特点和应用场景,让我们来看看几种适合新手的主流编程语言,并分析它们的特点、应用领域和学习难度,帮助你做出明智的选择。Reddit有很多编程相关的子版块(subreddits),如r/learnprogramming、r/programming等,大家在这里分享资源、讨论技术问题,是个获取信息的好地方。通过选择适合自己的编程语言,利用优质的学习资源,制定有效的学习计划,积极进行项目实践,并解决学习中的困难,你一定能够在大学生活中打下坚实的编程基础,逐步成长为一名编程大神!

double222222的博客 3621

一分钟明白什么是“编程”,再也不会被程序员笑话了

有人问,编程难吗?其实没有一件事情是入门难上天,精通易到爆的。编程亦是如此,编程其实入门不会像小白想的这么费劲,但是精通却比你想象的难。今天此文献给所有听过编程打算学习编程的小白们,了解一下编程其实挺好的,可以防止在程序员友人说自己干嘛的时候你完全听不明白的尴尬。编程到底是什么?其实可以看出提问者并不是编程新手,而是编程小白,也就是对编程一无所知的朋友,那么也没必要像其他答案那样说一些专业术语。我在这里给小白们用最简单的大白话科普一下编程:编程,拆分成两个字,“编”和“程”,是一个动宾结构。

weixin_68789096的博客 5467

常见的十几种编程语言介绍

作为一名小白,在刚接触编程的时候,常常不了解这些编程语言具体有什么用途,或者说不知道应该学习哪种语言能实现自己想要从事的IT领域方向,于是,结合自身学习经验以及资料查找,我整理了一些常见的编程语言的介绍,帮助大家认识了解编程语言的特点、用途,从而快速明确学习方向,制定学习计划。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。——(与java的功能相似,但主要开发的软件类型不一样) / (创始者:微软公司)

qq_46094651的博客 4万+

编程课主要学什么?电脑编程有哪些?(非常详细0从零基础到精通,收藏这篇就够了!

电脑编程有Java、BASIC C、C++、VB、VF、SQL、网页编程JSP、ASP、PHP等。电脑编程是指使用一种或多种计算机语言来编写程序的过程,这些程序可以让计算机执行特定任务,编程不仅限于软件开发,还包括网站构建、游戏设计、数据分析、人工智能等多个领域。编程语言是程序员与计算机沟通的桥梁。Python:Python是一种解释型的高级编程语言,因其简洁的语法和强大的功能被广泛应用于科学计算、数据处理、Web开发等领域。Python易于学习、可读性强,支持面向对象编程、函数式编程等多种编程范式。

Javachichi的博客 2230

程序员自学网站整理大全(非常详细)零基础入门到精通,收藏这篇就够了

有些大厂,例如奇安信,甚至会将渗透岗位分为红蓝两方,对候选人的技术要求比较高,大部分刚入行的新人,也将渗透岗位作为后期的发展目标。①就业环境:网络安全可以在计算机科学与技术、信息通信、电子商务、互联网金融、电子政务等领域从事相关工作,还可以在政府机关事业单位、银行、保险、证券等金融机构,电信、传媒等行业从事相关工作。(有条件请支持实体书)

Libra1313的博客 1万+

2025零基础编程初学者入门指南(超详细),带你从入门到精通,收藏这篇就够了!

编程对于许多初学者来说,编程似乎是一座难以攀登的高峰。那么,如何才能学好编程呢?接下来我们来讲讲几个要点,帮助你在编程的道路上稳步前行。

fly_enum的博客 1万+

史上最全 | 编程入门指南

兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。那是第一次我有了「开天眼」的感觉,我痛苦地意识到,我对一些学科只有少的可怜的真正的理解,包括我主修的物理与辅修的计算机科学。2、第二个坑没有第一个那么明显:幼稚的「整体论」方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来「补足基础」会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。

2301_82000445的博客 2140

编程是什么,什么是编程?

[作者] 网名: 猪头三 站点: http://www.x86asm.com Email: pliceman_110@163.com QQ: 643439947 编程生涯: 2001~至今[10年] 职业生涯: 9年 开发语言: C/C++; x86asm; Obj

其实我不是代码教父,我只是猪头三 7万+

Shell小技巧(九十七)特殊字符“;”“.”

“;”跟“#”类似,在shell中有多种用途 1.在一行中执行多个命令时,作为命令分隔符号 例如: echo “123”; echo "456" 2.在if分支语句时,if和then使用“;”分割 例如: if [ -x "$filename"] ; then echo "File $filename exists." else echo "File $filename not found." fi 3.";;"连续两个分号用于终止“case”选项 例如: ...

bigwood99的博客 7131

shell中常用的特殊符号大全,尤其是;;和双引号(限制通配符扩展的功能,其他教程没见到介绍)教程中没介绍

shell中常用的特殊符号大全,尤其是;;教程中没介绍

二进制模----细微行动改变影响世界 1305
上一篇: 关于创业还是工作的一点感悟
下一篇: 怎么构建c++应用程序的异常模型
cluner
博客等级 码龄24年 1粉丝 42原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值