Articles of 名

批量或Bash删除数千文件中的时间戳

今天我在处理我的自备备份系统方面犯了一个重大错误,结果删除了大约一半的用户文件夹。 幸运的是,备份存在,并能够复制我的所有数据。 坏的部分是每个被恢复的文件在文件名中都有一个时间戳。 所以filename.file的文件现在是filename〜20170401-1999.file 对于batch file我不太清楚,但是有没有什么方法可以编程一个BAT来运行每一个文件名并取出时间戳? 每个时间戳以〜开始,以文件types的周期结束。 所以删除所有包括和之后的代字符和停止在字符之前的字符将解决问题。 有大约4600个文件需要修复,有各种各样的文件types扩展名。 我在Windows 10 Pro上,并能够使用PowerShell或bash修复错误。 我安装了Windows Linux子系统,所以bash脚本也是可以接受的。

删除部分文件名的脚本

我正在寻找一种方法来删除我的文件名(大文件夹)的一部分。 我不想重命名他们,但我只想在文本文档或剪贴板中输出编辑的文件名。 他们都遵循类似的模式。 我的文件名的最初部分由系统随机化。 我不确定如何继续使用什么来完成第一部分。 这是一个例子文件名: 1231230#p9999_w_e_aa.jpg 我想提取9999部分(#p和第一个下划线之间的部分)。 https://stackoverflow.com/a/26601790/5628610 | 在这个与我的问题相同的另一个线程的答案,它总是一个重复的variables,而我有重复的variables,我不知道前进号码#p或第一个下划线后。 @echoclosuressetlocal enabledelayedexpansion ('dir / b a _ *。txt')中设置/ f %% A(set old_filename = %%〜A set new_filename =!old_filename:〜2!rename!old_filename!!new_filename!)如果要删除字符a_ @echoclosuressetlocal enabledelayedexpansion ('dir / b a _ *。txt')中的/ f %% A do(set old_filename = %%〜set new_filename =!old_filename:a_ =!rename!old_filename!!new_filename!) 这个解决scheme的修改版本是否适用于我的情况? —? https://stackoverflow.com/a/19149961/5628610 我目前正在使用的机器正在运行Windows 7。

如何在包含该文件的linux上find一个名为8.3的文件

我已经把自己变成了一个angular落 – 我有一个真正的旧的dBase表,其中包含8.3文件名,显然保存在一个旧的msdos / windows系统与文件。 我现在所有的文件和dBase(DBF文件) – 但连接数据库中的行和实际文件的链接是8.3格式。 文件和dBase文件已经从旧的Windows机器复制到Linux机器。 例如数据库将有一行包含: {“fileid”:1,“dosname”:“APPLE〜1.JPG”},{“fileid”:2,“dosname”:“APPLE〜2.JPG”} 并在文件目录中的某处我可能有“appletree.JPG”和“apple computer.JPG”。 我怎么知道哪个是哪个? 是否有某种逻辑我可以遵循(如字母数字sorting,以告诉哪个是〜1,哪个是〜2)

将path列表转换为文件名列表

背景 我发现自己经常复制文件path到剪贴板,这从Windows资源pipe理器执行起来有些麻烦。 所以我写了一个小小的.bat文件,放入%APPDATA%\Microsoft\Windows\SendTo\文件夹,利用CLIP可执行文件将所选文件path的列表复制到剪贴板。 这个文件只包含一行: echo|set /p= "%*" | clip.exe 哪个工作相当好,我可以在资源pipe理器中select一个或多个文件名,右键点击它们和“发送到” .bat文件,将它们复制到剪贴板。 每个文件path是完整的,并通过空格字符与其他文件path分开。 题 有时,我不想复制完整文件path的列表,但宁愿只有文件名的扩展名列表。 我知道如何使用这里或这里描述的%~nx语法对单个文件path进行转换。 我尝试了这些不同的组合,但似乎无法为我的path列表find可行的解决scheme。 以下代码正确地echo显文件名: for %%F in (%*) do echo %%~nxF …但我怎么把它们合并到CLIP ? 我必须做string连接吗? 也许在一个子程序中被call ,还是有一个更优雅的解决scheme?

当长文件名时,Python的os.walk()在Windows中失败

我使用python os.walk()获取文件和目录在一些目录中,但有文件名称太长(> 300),os.walk()没有返回,使用onerror我得到'[错误234]更多数据可用“。 我试图使用yield,但也得不到任何东西,并显示“Traceback:StopIteration”。 操作系统是windows,代码很简单。 我已经testing了一个目录,如果有长名文件,就会出现问题,而如果用短名称重命名长文件,代码可以得到正确的结果。 我无法为这些目录做任何事情,比如重命名或移动长名称的文件。 请帮我解决问题! def t(a): for root,dirs,files in os.walk(a): print root,dirs,files t('c:/test/1')

批参数%〜s1给出错误的8.3短名称

我正在尝试在Windows XP中编写一个batch file,该文件接受完全限定的path名​​并输出8.3短名称版本… @echo off echo "%~s1" 我碰到一个特定的情况下,这将输出一个不正确的path和文件… C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2" "C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2" 请注意,上述输出(“C:\ DOCUME〜1 \ angus \ LOCALS〜1 \ TEMPOR〜1 \ Content.IE5 \ 2JSTM34V \ 62_1_〜1.JA2M34V \ 62 [1] .ja2”)不存在。 如果从该输出中删除“.JA2M34V \ 62 [1]”部分,则生成的string将是原始input文件的有效path。 这似乎是在文件名中使用括号([])的问题。 如果我在同一个目录中创build一个文件62.ja2,输出将是正确的… C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2" "C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2" 这是Windows中的错误? 有谁知道是否有一个解决方法,允许batch file正确处理这个文件名?

查找是否安装了第三方软件,安装path和EXE的名称?

我在C#和MATLAB中调用另一个软件(CMG)来做一些处理的软件。 我的问题是,我在我的程序中放入的软件的地址在我的个人计算机上是正确的,而不是在客户的计算机上(我不知道在他们的计算机上CMG软件的path是什么)。 我怎样才能提供一个通用的地址forms,以使其在每台计算机上工作? 以下是我从MATLAB软件中调用的path: C:\Program Files (x86)\CMG\STARS\2011.10\Win_x64\EXE\st201110.exe 正如你看到它是在驱动器C和版本是2011.10。 所以,如果客户的版本是其他的东西,并且安装在其他驱动器上,这个path是没有意义的。

batch file脚本从文件名中删除特殊字符(Windows)

我有一大堆文件,其中一些包含文件名中的特殊字符(如ä,ö,%等)。 我想要一个脚本文件迭代这些文件,并重命名删除特殊字符。 我真的不介意它做什么,但它可以用下划线代替它们,例如 Störung%20.doc将重命名为St_rung_20.doc 按照优先顺序: 一个Windiwsbatch file 用cscript(vbs)运行的Windows脚本文件 可以从命令行运行的第三方软件(即不需要用户交互) 另一个语言脚本文件,我将不得不安装一个额外的脚本引擎 背景:我试图用Windows上的GnuPGencryption这些文件,但似乎没有用–encrypt-files选项来处理文件名中的特殊字符。

Windows批处理:(robo)复制命令的Unicode参数

我需要在一个batch file中复制多个文件。 这些文件具有映射到不同代码页的Unicode名称。 例: set ArabicFile=ڊڌڵڲڛشس set CyrillicFile=щЖЛдЉи set GermanFile=Bücher copy %ArabicFile% SomePlaceElse copy %CyrillicFile% SomePlaceElse copy %GermanFile% SomePlaceElse 问题:batch file不能是Unicode。 问题:如何将Unicode文件名写入batch file,以便复制命令识别它们? 笔记: 我不在乎如何显示文件名称。 其实batch file不仅仅是复制这些文件,我只是简化了描述,使问题更清晰。 正确的batch file: 用Arnout的答案我修改我的batch file如下。 现在它可以正常工作,而不需要更改字体(如Arnout所评论的那样,这会很麻烦)。 @echo off chcp 65001 set ArabicFolder=ڊڌڵڲڛشس set CyrillicFolder=щЖЛдЉи set GermanFolder=Bücher robocopy /ed:\temp\test\%ArabicFolder% d:\temp\test2\%ArabicFolder% /log:copy.log robocopy /ed:\temp\test\%CyrillicFolder% d:\temp\test2\%CyrillicFolder% /log+:copy.log robocopy /ed:\temp\test\%GermanFolder% d:\temp\test2\%GermanFolder% /log+:copy.log

从Windows中删除我的文件名中的最后一个字符

林相当新的批处理编程,我想删除我的文件名的最后一个字符。 10_myfile_12345_6789.txt 11_myfile_12345_0987.txt 我想删除我的文件名的最后4位数字我怎么能做到这一点? 我已经试过了 @echo off setlocal enabledelayedexpansion set X=3 set FOLDER_PATH= pushd %FOLDER_PATH% for %%f in (*) do if %%f neq %~nx0 ( set "filename=%%~nf" ren "%%f" "!filename!%%~xf" ) popd PAUSE 但它删除了第一个和最后一个字符,我只在这里看到这一点,即时通讯仍然很困惑,这是如何工作的