标题: [文件操作] [已解决]批处理怎么在文件/文件夹名中按要求加入某个字符? [打印本页]
作者: ChenCheChe 时间: 2020-1-29 21:00 标题: [已解决]批处理怎么在文件/文件夹名中按要求加入某个字符?
目录下有文件和文件夹,要求是在文件/文件夹名称的字母和数字中间加上-这个符号,
但是条件是相邻的字母和数字都是两个或者以上字符才加上-这个符号,单一字母和数字之间不加符号。
例如把 ABCD1234C 这个文件/文件夹名,更改为 ABCD-1234C
请问大佬怎么写?
作者: flashercs 时间: 2020-1-29 22:03
- <#*,:&cls
- @echo off
- pushd "%~dp0"
- powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
- popd
- pause
- exit /b
- #>
- # 文件名 2个及以上字母与2个及以上数字之间添加-
- Get-ChildItem -Path . -Filter * | ForEach-Object {
- $newName = $_.FullName -replace '(?<=[a-z]{2,})(?=[0-9]{2,})|(?<=[0-9]{2,})(?=[a-z]{2,})', '-'
- if ($newName -ne $_.FullName) {
- Rename-Item -LiteralPath $_.FullName -NewName $newName -Force -Verbose
- }
- }
复制代码
作者: ChenCheChe 时间: 2020-1-29 23:34
回复 2# flashercs
老哥这个运行后报错显示这个
Rename-Item : 找不到与参数名称“LiteralPath”匹配的参数。
所在位置 行:13 字符: 29
+ Rename-Item -LiteralPath <<<< $_.FullName -NewName $newName -Force -Verb
ose
+ CategoryInfo : InvalidArgument: ( [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
Rename-Item : 找不到与参数名称“LiteralPath”匹配的参数。
所在位置 行:13 字符: 29
+ Rename-Item -LiteralPath <<<< $_.FullName -NewName $newName -Force -Verb
ose
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
Rename-Item : 找不到与参数名称“LiteralPath”匹配的参数。
所在位置 行:13 字符: 29
+ Rename-Item -LiteralPath <<<< $_.FullName -NewName $newName -Force -Verb
ose
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
Rename-Item : 找不到与参数名称“LiteralPath”匹配的参数。
所在位置 行:13 字符: 29
+ Rename-Item -LiteralPath <<<< $_.FullName -NewName $newName -Force -Verb
ose
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
Rename-Item : 找不到与参数名称“LiteralPath”匹配的参数。
所在位置 行:13 字符: 29
+ Rename-Item -LiteralPath <<<< $_.FullName -NewName $newName -Force -Verb
ose
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
Rename-Item : 找不到与参数名称“LiteralPath”匹配的参数。
所在位置 行:13 字符: 29
+ Rename-Item -LiteralPath <<<< $_.FullName -NewName $newName -Force -Verb
ose
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBin
dingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.RenameItemCommand
请按任意键继续. . .
作者: flashercs 时间: 2020-1-30 00:39
本帖最后由 flashercs 于 2020-1-30 00:40 编辑
回复 3# ChenCheChe - <#*,:&cls
- @echo off
- pushd "%~dp0"
- powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
- popd
- pause
- exit /b
- #>
- # 文件名 2个及以上字母与2个及以上数字之间添加-
- Get-ChildItem -Path . -Filter * | ForEach-Object {
- $newName = $_.FullName -replace '(?<=[a-z]{2,})(?=[0-9]{2,})|(?<=[0-9]{2,})(?=[a-z]{2,})', '-'
- if ($newName -ne $_.FullName) {
- Rename-Item -Path ($_.pspath -replace '[\[\]]','`$&') -NewName $newName -Force -Verbose
- # $_.MoveTo($newName)
- }
- }
复制代码
作者: Gin_Q 时间: 2020-1-30 01:35
本帖最后由 Gin_Q 于 2020-1-30 01:41 编辑
这是c写的!只支持数字和字母- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 2048
- FILE *fp;
- FILE *fp1;
- int main(void)
- {
- if ((fp=fopen("C:\\Users\\Cool_Breeze\\Desktop\\gin\\strt.txt","r"))==NULL) //待处理文件的位置
- {
- printf("读取文件失败!");
- return 0;
- }
- if ((fp1=fopen("C:\\Users\\Cool_Breeze\\Desktop\\gin\\new.txt","w"))==NULL) //保存文件的位置
- {
- printf("打开文件失败!");
- return 0;
- }
- char str[MAX]="0";
- int fun1(char*);
- printf("正在处理文件...\n");
- while (1)
- {
- if (fgets(str,MAX,fp)==NULL) break;
- fun1(str);
- }
- fclose(fp);
- fclose(fp1);
- printf("完成");
- return 0;
- }
- int fun1(char *arr)
- {
- char *p=arr,temp[MAX]="";
- int n=0,i=0,j=0,on=0;
- while (1)
- {
- if (*(p+n)>=48 && *(p+n)<=57)
- {
- i++;
- on=0;
- if (i>=2 && on!=0)
- {
- strcat(temp,"-");
- i=0;
- }
- else if (j>=2 && on!=1)
- {
- strcat(temp,"-");
- j=0;
- }
- strncat(temp,(p+n),1);
- }
- else if (*(p+n)>=65 && *(p+n)<=90)
- {
- j++;
- on=1;
- if (i>=2 && on!=0)
- {
- strcat(temp,"-");
- i=0;
- }
- else if (j>=2 && on!=1)
- {
- strcat(temp,"-");
- j=0;
- }
- strncat(temp,(p+n),1);
- }
- else if (*(p+n)>=97 && *(p+n)<=122)
- {
- j++;
- on=1;
- if (i>=2 && on!=0)
- {
- strcat(temp,"-");
- i=0;
- }
- else if (j>=2 && on!=1)
- {
- strcat(temp,"-");
- j=0;
- }
- strncat(temp,(p+n),1);
- }
- if (*(p+n)=='\0')
- {
- if (i>=2) strcat(temp,"-"); //满足条件结尾是否加【-】,默认加。
- else if (j>=2) strcat(temp,"-"); //满足条件结尾是否加【-】,默认加。
- fprintf(fp1,"%s\n",temp);
- return 0;
- }
- n++;
- }
- }
复制代码
- 源文件:abcd123c
- an124Ab1
- wrf1
- waf234
- af13
- fa1
- ----------------------分割线---------------------
- 效果如下:
- abcd-123-c
- an-124-Ab-1
- wrf-1
- waf-234
- af-13
- fa-1
复制代码
作者: Gin_Q 时间: 2020-1-30 01:37
这个需要你先把文件名储存在文件中,然后通过批处理重命名
作者: ChenCheChe 时间: 2020-1-30 19:39
回复 5# Gin_Q
谢谢,我试试。
作者: ChenCheChe 时间: 2020-1-30 19:39
回复 4# flashercs
谢谢诶,我试试。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |