- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在装有 Windows 7 的 PC 上,我使用一个简单的批处理脚本来重命名一些 Excel 文件,并在它们的父文件夹名称前添加:
for /f "delims=" %%i in ('dir /b /AD') do (
cd "%%i"
for /f "delims=" %%j in ('dir /b *.xl*') do ren "%%~j" "%%i_%%~j"
cd..
)
我注意到一些文件生成了一个错误,“系统找不到指定的文件。”这些文件的文件名中都有一个破折号 (—)。在我使用 Windows 资源管理器将破折号更改为常规连字符 (-) 后,该脚本在这些文件上运行良好。
我如何帮助脚本重命名这些文件?
最佳答案
您的问题不在于批处理变量:从命令行可以正常工作:
for %i in (*) do ren "%~i" "test_%~i"
但是,从中可以看出:
for /f "delims=" %i in ('dir /b /a-d') do @echo ren "%~i" "test2_%~i"
dir/b
正在将 em 破折号更改为连字符,因此 ren
命令显然找不到要更改的文件。
对于您的示例,您应该找到:
for /d %%i in (*) do (
和
for %%j in (*.xl*) do ...
应该可以正常工作。
如果您出于其他原因需要 dir/b
,我现在看不到解决方案。
(我有一个令人费解的尝试将所有连字符换成问号,使用 SET/?
和 中描述的“环境变量替换”和“延迟环境变量扩展” CMD/?
,允许任意字符匹配,然后再次使用ren
模式匹配忽略问题。
即
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%I in ('dir /b /a-d') do (
Set K=%%I
ren "!K:-=?!" "test2_!K:-=?!"
)
但是 ren * x*
用 x
替换文件的开头,所以上面的连字符替换为内容在插入 test_
之前的那个位置。
所以这种方法能做的最好的事情就是将 em 破折号转换为连字符:
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%I in ('dir /b /a-d') do (
Set K=%%I
ren "!K:-=?!" "test2_!K!"
)
)
并确认问题出在 dir/b
的输出:在命令行上:
dir /b *—* > test.txt
—
是一个破折号,只会列出带有破折号的文件,但是在输出文件中,例如Notepad test.txt
,您只会找到连字符,没有长破折号。
顺便说一句,我已经在 Windows 8.1 上完成了所有这些测试,VER
显示为 Microsoft Windows [Version 6.3.9600]
。
(正如我上面提到的,我在这个答案中确实有 ren * x*
,但是 replaces 第一个字符为 x
而不是插入它,我一直认为 ren
会这样做!)
关于windows - 如何处理文件名中的破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22677677/
我正在尝试使用 Javascript Regex 验证以下格式基本上破折号之前的第一组数字只能是 3 个数字字符。而破折号后面的字符只能是两个或三个数字字符。不允许使用其他字符或空格。 我看过几篇关于
我试图用 gsub 替换我认为是标准的破折号。我正在测试的代码是: gsub("-", "ABC", "reported – estimate") 但是,这没有任何作用。我将破折号复制并粘贴到 htt
我有一个带有可删除行和列的破折号 DataTable 对象。我想根据可见行更新图形。我不确定如何创建回调以及要传递哪些参数。在浏览器中删除行时,存储在表对象中的数据实际上可能不会更改。 from da
我正在尝试为超过一周前的日期着色。但当我这样做时,它会为所有日期着色。 首先我在破折号代码之前尝试过它,它工作得很好 df = pd.DataFrame(list(collection_jobs.fi
我正在尝试匹配 python 中的以下行,但是该行不起作用。 示例文本为: usr/local/java/latest/bin/java-Djava.util.logging.config.file=
我目前正在使用以下 JavaScript 代码: concatedSubstring.replace(/\//g, '-').replace(/[A-Za-z]/g, function(c){
我在 postgreSQL 中使用 regex_replace 并试图去除字符串中不是字母或数字的任何字符。但是,使用此正则表达式: select * from regexp_replace('bli
我正在尝试选择类名中有破折号的对象 - 例如 $("div.nav-next"); 它不起作用 - 似乎破折号是问题所在 - 有什么想法吗?谢谢 最佳答案 试试这个。去掉“div”部分。 $('.na
如何将连字符打印到这样的输出中,例如 344-34-4333。如果这个 ID 是从一个没有连字符的文件中读取的,我怎样才能让它打印 xxx-xx-xxxx 3 to 2 to 4 ? 最佳答案 std
数字小部件可以在同一个仪表板上多次使用吗? 例如我想显示每个团队成员的当前分数,每个团队成员一个带有向上/向下箭头的小部件,将当前分数与最后一个分数进行比较,如果分数上升,则小部件背景为绿色,如果分数
如何在 Linux 中使用命令行将目录名中的空格替换为 -(破折号)? 注意:有数百个目录,每个目录都有子目录。 我尝试了以下命令,但它返回一条消息'call: rename from to file
当我使用 android 虚线时,它在小屏幕上工作正常,但在 Samsung S3 设备和更高版本中不工作。 截图 和 drawable/dashline.xml XML
我正在使用 GNU bash 运行 Windows,版本 4.3.46(2)-release (x86_64-pc-msys) 可重现的例子 我有一个很大的制表符分隔的文本文件,其中有很多行和列。这只
因此,我正在构建一个读取传感器数据并使用 plotly 绘制获取的数据的项目。使用 interval = 1000 效果很好,但 interval = 500 会导致图形变得歇斯底里。 这是我的图表变
我有以下正则表达式,但我希望文本框允许使用破折号 ^[0-9a-zA-Z \/_?:.,\s]+$ 有人知道我该怎么做吗? 最佳答案 破折号必须是字符类中的第一个/最后一个字符,才能按字面使用: ^[
我经常在 PHP MVC 应用程序中看到 Apache RewriteRule,如下所示: RewriteRule ^.*$ - [NC,L] Apache docs for the RewriteR
我在 zsh 脚本中遇到基本名称问题。想象一下 $directory 包含一个带有前导破折号的文件名,在我的例子中它是“-Fast-”。然后脚本执行 folder=$(basename
我需要制作一条在变量后面有破折号的路线。我想要的很容易用代码解释(这是我尝试过的,但它不起作用) Route::any('tournament/{sportName}/{regionName}/{to
我在 zsh 脚本中遇到基本名称问题。想象一下 $directory 包含一个带有前导破折号的文件名,在我的例子中它是“-Fast-”。然后脚本执行 folder=$(basename
简单的说: echo "xxxxx Tyyy zzzzz" | egrep "\byyy\b" (不匹配哪个是正确的) echo "xxxxx T-yyy zzzzz" | egrep "\byyy\
我是一名优秀的程序员,十分优秀!