由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 搞机械的请教如何写这么一个小程序
相关主题
delete[]的设计很不好一道算法题,到现在也没弄明白,谁能帮忙看看。
如何实现 strtok() ? 请问一个origin问题。
这个有更好的算法吗?如何实现这个“time to send out email“?
我的DBA在生成ORACLE table的时候需要一个一个column看 (转载)程序速读指南
linux 能查到 deleted file list 吗问个C++中重复删除指针的问题
new了指针,delete的时候出错了Python 初级问题
这个同学很神Perl插入MySQL中双引号的问题
这道题有什么好思路?Need help on choosing the language
相关话题的讨论汇总
话题: drw话题: prt话题: file话题: prtpath话题: fin
进入Programming版参与讨论
1 (共1页)
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
2
Python.
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批处理能实现吗?
: 多谢指点!

1 (共1页)
进入Programming版参与讨论
相关主题
Need help on choosing the languagelinux 能查到 deleted file list 吗
C Library (一个统计方面的) 安装一问new了指针,delete的时候出错了
overload "++i"里的operator“++”,怎么declare?这个同学很神
typedef struct的问题这道题有什么好思路?
delete[]的设计很不好一道算法题,到现在也没弄明白,谁能帮忙看看。
如何实现 strtok() ? 请问一个origin问题。
这个有更好的算法吗?如何实现这个“time to send out email“?
我的DBA在生成ORACLE table的时候需要一个一个column看 (转载)程序速读指南
相关话题的讨论汇总
话题: drw话题: prt话题: file话题: prtpath话题: fin