要做一项工作,内容是将一个word中的图表复制到多个(接近300个)word文档的末尾,不想一个个CTRL C+CTRL V,就想到了用程序来实现

我第一个想到的使用python来实现,由于技术太渣,尝试了多次,没能写出来,只记得有一个叫做win32com的模块,专门处理文档的。这里先不说了

在查阅资料的过程中,偶然看见在linux中的cat命令似乎能做这件事,恰好我装了centos7,也在学习这Linux命令,于是转战linux。

对这个工作,我分三步进行:

1:使用cat命令将一个文档追加到另一个文档末尾

2:得到一个目录下的所有文件名(后面讲为什么)

3:   写shell脚本实现功能

一:关于cat命令

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

1.命令格式:

  cat [选项] [文件]...

2.命令功能:

  cat命令的功能:

  1.一次显示整个文件:cat filename  

  2.从键盘创建一个文件:cat > filename  只能创建新文件,不能编辑已有文件.

  3.将几个文件合并为一个文件:cat file1 file2 > file

  4.在一个文件后追加另一个文件:cat file1 >> file2

3.命令参数:

  -A, --show-all           等价于 -vET

  -b, --number-nonblank    对非空输出行编号

  -e                       等价于 -vE

  -E, --show-ends          在每行结束处显示 $

  -n, --number     对输出的所有行编号,由1开始对所有输出的行数编号

  -s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行

  -t                       与 -vT 等价

  -T, --show-tabs          将跳格字符显示为 ^I

  -u                       (被忽略)

  -v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

这里给出几个实例:

1:把 file1 的文档内容加上行号后输入 file2 这个文档里

cat -n file1 > file2

注意这里是吧file1的内容输入到file2中,file2若存在,则清空内容,里面输入file1内容,若不存在则创建file2,输入file1内容

2:把 file1 和 file2 的文档内容加上行号(空白行不加)之后将内容追加到 file3 文档里:

cat -b file1 file2 >>file3

该操作不会改变file3中原有的内容,把file1和file2的内容追加到file3的末尾

3:创建一个名为a.txt的文件

cat >a.txt <<EOF>EOF

输入第一行后,输入EOF,回车,就可以生成一个 a.txt 文件。其中EOF是告诉 bash 哪个符号代表文件结束。当然你也可以使用自己习惯的符号。

4: 利用cat清空文件内容

如果 b.txt 文件有很多内容,而你想要清空的话,同样可以使用上面提到的命令形式:

cat >b.txt << EOF
>EOF

5: cat命令可以直接向文件中写入东西,并覆盖掉原本的东西

cat >c.txt  <<EOF
>2222
>3333
>EOF

利用cat命令处理的时候,尽量带上文件的格式,例如1.txt,1.doc

要是第一步,文件追加需要用到这个命令

cat file1 >> file2

二:获取一个目录下的文件名

获取目录下的文件名可以直接使用    ls   命令,但只是将名字打印出来,不能获得这个名字,也就是说如果想要在后面使用cat命令对这些文件进行处理的话,需要用一个变量来接收这些文件名,再对这个变量进行cat操作

下面介绍两种常用的方法来进行相关操作

1:使用${ }

${var##*/}

该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容

使用例子及结果如下:

~$ var = /dir1/dir2/file.txt
~$ echo ${var##*/}
file.txt

从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。

若使用时在shell程序文件中,可以使用变量来保存这个结果,再加以利用,如file = ${var##*/}

${var##*.}

该命令的作用是去掉变量var从左边算起的最后一个'.'字符及其左边的内容,返回从左边算起的最后一个'.'(不含该字符)的右边的内容

使用例子及结果如下:

~$ var = /dir1/dir2/file.txt
~$ echo ${var##*.}
txt

从运行结果可以看到,使用该命令,可以提取出我们需要的文件后缀。

如果文件的后缀不仅有一个,例如,file.tar.gz,命令${var##*.}仅能提取最后一个后缀,而我想提取tar.gz时该怎么办?那么就要用下面所说的${var#*.}命令了。

${var#*.}

该命令的作用是去掉变量var从左边算起的第一个'.'字符及其左边的内容,返回从左边算起第一个'.'(不含该字符)的右边部分的内容

使用例子及结果如下:

~$ var = /dir1/dir2/file.tar.gz
~$ echo ${var#*.}
tar.gz

从运行结果可以看到,使用该命令,可以提取出文件的多个后缀.

${var%/*}

该命令的使用是去掉变量var从右边算起的第一个'/'字符及其右边的内容,返回从右边算起的第一个'/'(不含该字符)的左边的内容

使用例子及结果如下:

~$ var = /dir1/dir2/file.txt
~$ echo ${var%/*}
/dir1/dir2

使用该命令,可以提取出我们需要的文件所在的目录.

${var%%.*}

该命令的使用是去掉变量var从右边算起的最后一个'.'字符及其右边的内容,返回从右边算起的最后一个'.'(不含该字符)的左边的内容

使用例子及结果如下:

~$ var = /dir1/dir2/file.txt
~$ echo ${var%%.*}
/dir/dir/file

当我们需要建立一个与文件名相同名字(没有后缀)的目录与对应的文件相对应时,就可以使用该命令来进行操作。例如,解压文件的情况就与此类似,我们压缩文件file.zip时,会在与file.zip同级目录下建立一个名为file的目录。

⑥总结${ }

${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的'/'或'.'。也就是说,上面的使用方法只是它使用的一个特例。

看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。

#:表示从左边算起第一个

%:表示从右边算起第一个

##:表示从左边算起最后一个

%%:表示从右边算起最后一个

换句话来说,#总是表示左边算起,%总是表示右边算起。

*:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的'/'和'.')的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的'/'和'.')的右边,表示删除指定字符及其右边的内容。这里的'*'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。

看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。

2:basename和dirname

${}并不是专门为提取文件名和目录名设计的命令,那么basename和dirname命令就是专门为做这一件事而已准备的了。

①basename

该命令的作用是从路径中提取出文件名,使用方法为:

basename NAME [SUFFIX]

1)从路径中提出出文件名(带后缀)

例子如下:

~$ var = /dir1/dir2/file.txt
~$ echo $(basename $var)
file.txt

2)从上面命令的用法中可以看到,后缀(SUFFIX)是一个可选项。所以,若只想提取出文件名file,而不带有后缀,还可以在变量的后面加上后缀名

例子如下:

~$ var = /dir1/dir2/file.txt
~$ echo $(basename $var.txt)
file

②dirname

该命令的作用是从路径中提取出目录名,使用方法为 dirname NAME

使用例子如下:

~$ var = /dir1/dir2/file.txt
~$ dirname $var
/dir1/dir2

这样就提取出了file.txt文件所在的目录。

注:该命令不仅能提取出普通文件所的目录,它能提取出任何文件所在的目录,例如目录所在的目录,如下:

~$ var = /dir1/dir2/
~$ dirname $var
/dir1

它提取出了目录dir2所在的目录dir1

三:shell脚本的实现

为方便进行操作,我把shell脚本与待处理文件放在了同一文件夹下

vi Additional_document.sh

将下列代码输入:

#这里是待处理文件的位置
Folder_A="/home/liuyaanng/liu"
for file_a in ${Folder_A}/*
do  temp_file=`basename $file_a`  cat a.txt >> $temp_fileecho 'success'
done  

保存退出后,要赋予shell脚本可执行权限,由于脚本与待处理文件在一个文件夹下,所以该脚本同样会被cat命令作用,为避免有东西再写入该脚本,要修改访问权限为只读

chmod r+x Additional_document.sh

执行该程序即可

./Additional_document.sh

有几个需要注意的问题:

1:该脚本仅支持纯文本的追加,不支持诸如图片,表格等

2:若处理windows系统下的word文件,打开文件是乱码,原因可能是你的linu系统下未安装对应的字体(并非未安装中文,是诸如宋体,楷体)

3:txt格式与doc格式也可追加,但为避免出现格式问题,可提前进行转格式操作,再进行追加

转格式为:

unoconv -f doc a.txt

unoconv存在于很多发行版的软件仓库中,也可通过其网站下载安装。

以上,为在linux下的完整操作

在我查阅大量资料的时候,发现两款在Windows下专门做批量处理文档的神器

在下载的时候,某度的搜索结果捆绑了太多软件,一不小心来了个全家桶,所以我在这分享一下安全绿色无捆绑的资源(排除打广告嫌疑,只是推荐,逃ε=ε=ε=┏(゜ロ゜;)┛)

一:word文档批处理大师   Batchword(付费版本,土豪推荐)

链接:https://pan.baidu.com/s/1KFcHojbwAaPkWZL_TEgBZw 密码:j7w1

这个我找了很久,找不到万能的注册机,破解版的也尝试了,暂时没有找到能用的,有资源的请默默留下链接(^人^)

word文档批量处理大师基本功能

  1、批量运行word宏代码:

  2、批量插入版权/随机文字、随机版权图片:

  3、批量添加文字超链接、替换文档内容

  4、批量格式设置:

  5、页面设置、属性设置

  6、替换/设置图片、超链接

  7、word转图片或PDF

  8、设置/清除文字页眉、图片页眉

  9、设置/清除文字页脚、图片页脚

  10、设置/清除文字水印、图片水印

  11、批量打印

  12、插入/合并文档

  13、转换类型(可转换为doc、rtf、txt、xml、htm、html、mht、mhtml、dot、docx、dotx中的任一格式)

  14、繁简转换

  15、设置、修改密码

二:BatchDoc(功能较BatchWord少,也是需要注册)

链接:https://pan.baidu.com/s/1pN1mG_wDjIFvQtg3tLc3lg&nbsp; 密码:cbfo

这个在万能的吾爱破解坛友的帮助下还是有道道哈哈哈,打开软件后输入传送门:HJG4567-AQsmVAo-8

转载于:https://www.cnblogs.com/liuyaanng/p/9387541.html

记录一次批量处理文档的过程相关推荐

  1. Python学习之批量word文档转pdf并统计其页码

    pypdf2是一个Python模块,可以用来读取.写入和操作PDF文件.要安装pypdf2模块,请按照以下步骤操作: 确保你已经安装了Python.你可以在终端或命令提示符中输入python --ve ...

  2. ES-PHP向ES批量添加文档报No alive nodes found in your cluster

    ES-PHP向ES批量添加文档报No alive nodes found in your cluster 2016年12月14日 12:31:40 阅读数:2668 参考文章phpcurl 请求Chu ...

  3. Word中使用MathType批量调整文档公式的大小

    Word中使用MathType批量调整文档字母公式大小 背景:论文写作需要撰写大量的字母和数学公式,但是在协作撰写及内容中英文翻译过程中,字母和数学公式容易变形,因此Word中使用MathType批量 ...

  4. wps批量将文档括号内的字符串修改颜色

    wps批量将文档括号内的字符串修改颜色 文档内容如下,我们想把括号内的字符串全部修改为红色. 1)使用快捷键Ctrl+h,打开替换会话框. 输入查找的内容:((*)) 输出替换的内容:(\1) 然后点 ...

  5. WPS批量设置及批量打印文档

    WPS批量设置及批量打印文档 背景:我们需要一次打印多份文档,且文档页边距有统一的特殊要求,不能使用默认页边距参数,需要手动设置,如果每打印一份文档都要手动设置打印时的页边距,那么既费时又费力.这种情 ...

  6. 计算机删除文档中所有的空行,Word查找技巧:批量删除文档中空格、空行

    原标题:Word查找技巧:批量删除文档中空格.空行 在日常工作中我们经常会碰到以下2个困扰: 如,很多网上下载或拷贝到Word的纯文本形式的资料,最烦的莫过于文档中有一大堆空格或空行(回车符),格式非 ...

  7. java计算机毕业设计小学生素质成长记录平台源码+lw文档+系统+数据库

    java计算机毕业设计小学生素质成长记录平台源码+lw文档+系统+数据库 java计算机毕业设计小学生素质成长记录平台源码+lw文档+系统+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  8. 如何在word文档中,在作文格子内批量输入文档!

    如何在word文档中,在作文格子内批量输入文档 在这样的格子内,书写文字是不是很难受? 那么如何批量的在其中填入我们想填写的文字呢? 一个一个输入?真就时间多了没事干了- 其实,只需要这么简简单单的几 ...

  9. Kibana批量插入文档操作

    批量创建文档 POST _bulk{"index":{"_index":"test","_type":"pro ...

最新文章

  1. Multimap的遍历和删除(很重要)
  2. PowerDesigner(一)-PowerDesigner概述(系统分析与建模)
  3. 互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家
  4. 部分和(partial sum)在算法求解中的作用
  5. Vue项目实战篇一:实现一个完整的留言板(带前后端源码下载)
  6. 【UML建模】(8) UML建模之组件图
  7. 可以提高DeepFaceLab(DeepFake)合成最终视频速度的方法
  8. 39元超值!360超级充电器拆解与评测
  9. 2021-12-21 理解JS中的shim / polyfill / 垫片概念
  10. 易懂介绍Java中类与对象、构造方法、继承
  11. Apache Echarts常用图表之柱状图
  12. 【美团技术团队】2014年-2022年后端文章精选篇
  13. 【DNN】PNN(Product-based Neural Networks )
  14. 10个iPhone开发网站、论坛、博客
  15. BZOJ 4668 冷战(按秩合并并查集+LCA)
  16. 直觉模糊有计算机知识嘛,基于直觉模糊集理论的IDS方法研究-计算机科学.PDF
  17. Linux oracle 数据导出导入步骤:
  18. 谷歌翻译彻底凉了?手把手教你复活!
  19. 音乐怪兽来袭 诺基亚X7港行即将开卖
  20. 非常简单的使用matlab绘制轨迹世界地图的方法

热门文章

  1. 网站服务器租用的类型有哪些
  2. 高中地理模板_高中地理万能模板
  3. html盒子圆角属性,CSS盒子模型-圆角边框
  4. 量化交易-利用同花顺量化平台supermind 5行代码搞定多条件选股并微信实时收消息-保姆级教程
  5. Java基础(介绍与数据类型)
  6. php pdo drivers no supported,php使用pdo链接,参数PDO::ATTR_EMULATE_PREPARES 设为false 报错...
  7. [树状数组]飘雪圣域
  8. 大服务器实装维护公告,《魔兽世界》7月16日大服务器更新公告 最新配对列表一览...
  9. python爬虫---百度翻译的爬取及可视化
  10. openGL API 之glProgramUniform4fv()