小编jer*_*ter的帖子

如何在Powershell中访问包含特殊字符的文件路径?

我从Java应用程序(通过Windows命令提示符)中调用powershell来读取各种文件属性.

例如

powershell (get-item 'C:\Users\erlpm\Desktop\Temp\s p a c e s.txt').creationTime
Run Code Online (Sandbox Code Playgroud)

我将文件路径用单引号括起来,因为它可能包含空格.它运行正常,直到我遇到包含方括号的文件路径,它似乎被解释为通配符.我设法通过添加-literalPath参数来解决它:

powershell (get-item -literalpath 'C:\Users\erlpm\Desktop\Temp\brackets[].txt').creationTime
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好......但是文件路径也可能包含单引号,美元符号,&符号......并且所有这些字符似乎在powershell中都有一个特定的函数,-literalPath参数似乎不起作用.我尝试用双引号括起路径或用`字符逃避,但这也没有解决我的问题:-(

有关如何将文件路径传递给Powershell的任何建议,其中可能包含空格,单引号,方括号,&符号,美元符号等?

更新: 这里有人已经向我展示了如何在Powershell中实现它,但不知何故,答案已被删除?
无论如何,我确实创建了一个名为的文件$ & ' [].txt.这是 Powershell中运行的形式(需要转义&):

    PS C:\Users\erlpm> Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"


    Directory: C:\Users\erlpm\Desktop\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2012-08-23     14:22          0 $ & ' [].txt
Run Code Online (Sandbox Code Playgroud)

但是当我通过Windows命令提示符执行相同的Powershell命令时,......

C:\Users\erlpm>powershell Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"
Run Code Online (Sandbox Code Playgroud)

...我收到此错误:

    Ampersand not allowed. The & operator is reserved for future use; use "&" to …
Run Code Online (Sandbox Code Playgroud)

powershell

13
推荐指数
3
解决办法
3万
查看次数

是否有一种不那么冗长的方法来检索未弃用的枚举值?

请参阅下面的代码.我有enum一些标记为已弃用的值.我需要一个不被弃用Collection的所有值enum.我设法使用反射完成任务,但它看起来太冗长了.有更清晰的方法来定义@Deprecated标签的存在吗?

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class DeprecatedEnumValues {

public enum MyEnum {
    AA,
    BB,
    @Deprecated CC,
    DD,
    @Deprecated EE,
}

public static void main(String[] args) {

    List<MyEnum> myNonDeprecatedEnumValues = new ArrayList<MyEnum>();

    for (Field field : MyEnum.class.getDeclaredFields()) {
        if (field.isEnumConstant() && !field.isAnnotationPresent(Deprecated.class)) {
            myNonDeprecatedEnumValues.add(MyEnum.valueOf(field.getName()));
        }
    }
    System.out.println(myNonDeprecatedEnumValues);
}
}
Run Code Online (Sandbox Code Playgroud)

java reflection enums deprecated

10
推荐指数
2
解决办法
2106
查看次数

标签 统计

deprecated ×1

enums ×1

java ×1

powershell ×1

reflection ×1