. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
chenlh
 
chenlh 的头像
支柱会员
 
资 料:
注册日期: Mar 2002
帖子: 5,994 声望值: 7
精华: 11,解答: 3
#1 旧 2021-02-27, 10:43:46 默认 已解答: 【求助】在不同文件夹下,每个文件夹生成一个文本,上面写明当前文件夹名是什么?
chenlh 当前离线  

文件夹层次有多级,而且名称没有固定和顺序

比如,有A-B-C-D文件夹,在A或B或C或C或 D文件夹下,每个又有几十个文件夹,然后才是最后存放的文档文件。

我想在最后一个层级的文件夹,新加一个DOC文档,上面写上,文档。只要有当前路径就行了

我现在的思路
1、新建一个1.bat文件,内容上写echo %CD%>00.doc
2、再新建一个2.bat,内容上写@echo off

for /f %%i in ('dir /ad /b') do copy 1.bat %%i

exit


3、把这两个批处理,复制到倒数第二级的文件夹里,点击2.BAT后(这边就有点麻烦了)

4、然后只能进到每一个最后一次层级的文件夹里,依然点击1.bat



求大神出手,
给个批处理,一次性解决问题
回复时引用此帖
最佳解答为:namejm
试试以下代码
考虑到文件夹路径可能存在空格或者&字符
生成的文件夹路径用引号括起来了
代码:
@echo off
echo "%cd%">文件夹路径.doc
for /f "delims=" %%i in ('dir /ad /b /s 2^>nul') do (
   echo "%%i">"%%i\文件夹路径.doc"
 )
 pause
for语句教程请参考 批处理for语句从入门到精通
jimmy_dong
 
jimmy_dong 的头像
管理员
 
资 料:
注册日期: Aug 2000
帖子: 5,175 声望值: 9
精华: 2,解答: 86
#2 旧 2021-02-27, 12:06:38 默认
jimmy_dong 当前离线  

逻辑较为复杂,用高级语言会容易一些,而且也便于以后再进一步扩展功能。

一般来讲,bat/sh/perl 只是用起来方便,做短平快的处理工作。复杂一些的,尤其是以后还会进一步改造的,不推荐用bat/sh/perl。推荐: python/node/go。

当然,有人会说perl也是高级语言,也能处理。经验之谈:如果新人拿到一个几百行的perl文件,可能好几天都弄不明白。所以也是不推荐的。

用PYTHON实现LZ的需求:

PHP 代码:
import os
def get_file_path
(root_path,dir_name):
    
#获取该目录下所有的文件名称和目录名称
    
dir_or_files os.listdir(root_path)
    
has_no_sub True
    
for dir_file in dir_or_files:
        
#获取目录或者文件的路径
        
dir_file_path os.path.join(root_path,dir_file)
        
#判断该路径为文件还是路径
        
if os.path.isdir(dir_file_path):
            
has_no_sub False
            dir_list
.append(dir_file_path)
            
#递归获取所有文件和目录的路径
            
get_file_path(dir_file_path,dir_file)
    if 
has_no_sub:
        
with open(root_path '/00.doc''w') as f:
            
f.write(dir_name)
        
        
         
if 
__name__ == "__main__":
    
#根目录路径
    
root_path r"/WORK/PYTHON/test/dir"
    
#执行遍历
    
get_file_path(root_path,'root'

BTW: 用python可以很容易生成word格式的doc。纯文本的还是用.txt做扩展名更好一些。


~~呵呵~~


……你呀,考虑一下吧,要快一点,你知道,肚子很快又饿了。 jimmy_dong@sina.com Oicq:816937

如果失去了“呵呵”,生活会是怎样?
回复时引用此帖
stevenxu
 
stevenxu 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 5,256 声望值: 3
精华: 0,解答: 16
#3 旧 2021-02-27, 12:11:26 默认
stevenxu 当前离线  

提示:请研究一下for /R的用法。一行命令就解决了


万物非主,唯曼尼大神是主
至圣之先师,亚当史密斯
回复时引用此帖
chenlh
 
chenlh 的头像
支柱会员
 
资 料:
注册日期: Mar 2002
帖子: 5,994 声望值: 7
精华: 11,解答: 3
#4 旧 2021-02-27, 15:55:50 默认
chenlh 当前离线  

引用:
作者: stevenxu 查看帖子
提示:请研究一下for /R的用法。一行命令就解决了
兄弟能别提示,直接给答案吗?
这事对我很重要。
谢谢

我查了用法,说实话,看不懂。
然后去找范例
有查到一条命令,是在每个文件夹里生成了一个空行的文本文件,很接近要的答案了。
可就不懂要怎么做了
回复时引用此帖
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,364 声望值: 3
精华: 21,解答: 83
#5 旧 2021-02-27, 18:55:24 默认
namejm 当前离线  

试试以下代码
考虑到文件夹路径可能存在空格或者&字符
生成的文件夹路径用引号括起来了
代码:
@echo off
echo "%cd%">文件夹路径.doc
for /f "delims=" %%i in ('dir /ad /b /s 2^>nul') do (
   echo "%%i">"%%i\文件夹路径.doc"
 )
 pause
for语句教程请参考 批处理for语句从入门到精通

此帖于 2021-02-27 22:43:31 被 namejm 编辑. .


TotalCommder、EveryThing、batch、AutoHotKey、EverEdit
精通Word、Excel、PPT的安装与卸载
熟练掌握VB、C++、SQL的拼读与缩写
回复时引用此帖
xclimbing
 
xclimbing 的头像
高级会员
 
资 料:
注册日期: Jan 2019
帖子: 735 声望值: 0
精华: 0,解答: 13
#6 旧 2021-02-27, 20:28:23 默认
xclimbing 当前离线  

班门弄斧:

代码:
@echo off
for /R /D %%d in (*) do (
	echo %%d
	pushd "%%d"
	echo %%d>path.txt
	type path.txt
	popd)
回复时引用此帖
chenlh
 
chenlh 的头像
支柱会员
 
资 料:
注册日期: Mar 2002
帖子: 5,994 声望值: 7
精华: 11,解答: 3
#7 旧 2021-02-27, 22:23:46 默认
chenlh 当前离线  

太感谢大家了
周一去试试
以后打印可以节约大量时间了
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 18:06:47.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号