p*******e 发帖数: 186 | 1 本人是搞机械的,对于编程不太懂,工作上需要做这样一件事情:
2D的图纸10000.drw.5对应的3D模型10000.prt.8原本放在同一个文件夹里,现在由于某
种原因10000.prt.8被删除,那么我希望在运行这个程序的时候,如果发现10000.drw.5
没有对应的10000.prt.8,那么就把10000.drw.5也从文件夹中删除,如果2D图纸有对应
的3D模型(也就是drw和prt前面的数字或字母是一样的),则2D和3D都不删除。
文件夹中可能有上千的文件,逐个找出效率太低,还可能出错。请问我应该看哪方面的
书?DOS下的bat批处理能实现吗?
多谢指点! |
l*********s 发帖数: 5409 | |
l********a 发帖数: 1154 | 3 弄个python2.7装上,把下面的代码保存为一个.py文件,放在那个文件夹运行一下就行了
#! /usr/bin/env python
import os
for fin in os.listdir(os.curdir):
if fin.endswith('.drw.5'):
prefix = fin[:fin.index('.')]
prtpath = prefix+'.prt.8'
if not (os.path.isfile(prtpath) and os.path.exists(prtpath)):
os.remove(fin)
print fin+' has been removed'
print 'DONE' |
p*******e 发帖数: 186 | 4 libralibra,谢谢你的程序。
可能我没有说清楚,文件的版本号会随着设计的变化而变化(保存后会自增),比如
10000.drw.5变成10000.drw.6,其对应的3D模型10000.prt.8可能已经变成10000.prt.
10了。所以文件后面的版本号是不固定的,固定的只是10000.drw.*一定对应10000.prt
.*。
另外,很多文件会放在同一个文件夹中,比如gasket.drw.*/gasket.prt.*和10000.drw
.*/10000.prt.*放在一起。如果这个文件夹中只有10020.drw.*,而没有10020.prt.*,
那么我就想把10020.drw.*从文件夹中删除,其它文件不动,判断的标准就是10020.drw
.*没有对应的10020.prt.*。
我JAVA有点基础,不知JAVA可不可以完成?
谢谢!
【在 l********a 的大作中提到】 : 弄个python2.7装上,把下面的代码保存为一个.py文件,放在那个文件夹运行一下就行了 : #! /usr/bin/env python : import os : for fin in os.listdir(os.curdir): : if fin.endswith('.drw.5'): : prefix = fin[:fin.index('.')] : prtpath = prefix+'.prt.8' : if not (os.path.isfile(prtpath) and os.path.exists(prtpath)): : os.remove(fin) : print fin+' has been removed'
|
r****y 发帖数: 26819 | 5 java当然可以做,不过你把他这python代码稍微改改更容易
prt
drw
drw
【在 p*******e 的大作中提到】 : libralibra,谢谢你的程序。 : 可能我没有说清楚,文件的版本号会随着设计的变化而变化(保存后会自增),比如 : 10000.drw.5变成10000.drw.6,其对应的3D模型10000.prt.8可能已经变成10000.prt. : 10了。所以文件后面的版本号是不固定的,固定的只是10000.drw.*一定对应10000.prt : .*。 : 另外,很多文件会放在同一个文件夹中,比如gasket.drw.*/gasket.prt.*和10000.drw : .*/10000.prt.*放在一起。如果这个文件夹中只有10020.drw.*,而没有10020.prt.*, : 那么我就想把10020.drw.*从文件夹中删除,其它文件不动,判断的标准就是10020.drw : .*没有对应的10020.prt.*。 : 我JAVA有点基础,不知JAVA可不可以完成?
|
r*g 发帖数: 3159 | 6 手工做法:
在 Dos windows 里,
dir /B >filelists.txt
在Excel里打开 filelists.txt
用 txt to columns 转化成 column format. (用 . 做 delimiter)
对所有columns建filter. 排序。该咋整咋整,就全找出来了。
.5
【在 p*******e 的大作中提到】 : 本人是搞机械的,对于编程不太懂,工作上需要做这样一件事情: : 2D的图纸10000.drw.5对应的3D模型10000.prt.8原本放在同一个文件夹里,现在由于某 : 种原因10000.prt.8被删除,那么我希望在运行这个程序的时候,如果发现10000.drw.5 : 没有对应的10000.prt.8,那么就把10000.drw.5也从文件夹中删除,如果2D图纸有对应 : 的3D模型(也就是drw和prt前面的数字或字母是一样的),则2D和3D都不删除。 : 文件夹中可能有上千的文件,逐个找出效率太低,还可能出错。请问我应该看哪方面的 : 书?DOS下的bat批处理能实现吗? : 多谢指点!
|
b********h 发帖数: 119 | 7 @echo off & setlocal ENABLEDELAYEDEXPANSION
for /r %%i in (.) do (
for /f %%j in ('dir /b *.drw.*') do (
set drw_file=%%j
set prt_file=!drw_file:drw=prt!
if not exist !prt_file! (
echo deleting !drw_file! ...
)
)
)
把这行 echo deleting !drw_file! ... 改成 del !drw_file! 就真正删除了。
.5
【在 p*******e 的大作中提到】 : 本人是搞机械的,对于编程不太懂,工作上需要做这样一件事情: : 2D的图纸10000.drw.5对应的3D模型10000.prt.8原本放在同一个文件夹里,现在由于某 : 种原因10000.prt.8被删除,那么我希望在运行这个程序的时候,如果发现10000.drw.5 : 没有对应的10000.prt.8,那么就把10000.drw.5也从文件夹中删除,如果2D图纸有对应 : 的3D模型(也就是drw和prt前面的数字或字母是一样的),则2D和3D都不删除。 : 文件夹中可能有上千的文件,逐个找出效率太低,还可能出错。请问我应该看哪方面的 : 书?DOS下的bat批处理能实现吗? : 多谢指点!
|