Index: /code/branches/core2/src/orxonox/core/CommandExecutor.cc
===================================================================
--- /code/branches/core2/src/orxonox/core/CommandExecutor.cc	(revision 1049)
+++ /code/branches/core2/src/orxonox/core/CommandExecutor.cc	(revision 1050)
@@ -415,7 +415,7 @@
                 {
                     if (tokens.size() >= 2)
-                        return evaluation.shortcut_->parse(tokens.subSet(1).join() + evaluation.getAdditionalParameter());
+                        return evaluation.shortcut_->parse(removeSlashes(tokens.subSet(1).join() + evaluation.getAdditionalParameter()));
                     else
-                        return evaluation.shortcut_->parse(evaluation.additionalParameter_);
+                        return evaluation.shortcut_->parse(removeSlashes(evaluation.additionalParameter_));
                 }
                 break;
@@ -429,7 +429,7 @@
                 {
                     if (tokens.size() >= 3)
-                        return evaluation.function_->parse(tokens.subSet(2).join() + evaluation.getAdditionalParameter());
+                        return evaluation.function_->parse(removeSlashes(tokens.subSet(2).join() + evaluation.getAdditionalParameter()));
                     else
-                        return evaluation.function_->parse(evaluation.additionalParameter_);
+                        return evaluation.function_->parse(removeSlashes(evaluation.additionalParameter_));
                 }
                 break;
@@ -447,14 +447,14 @@
                     {
                         if (tokens.size() >= 4)
-                            return evaluation.configvalue_->set(tokens.subSet(3).join() + evaluation.getAdditionalParameter());
+                            return evaluation.configvalue_->set(removeSlashes(tokens.subSet(3).join() + evaluation.getAdditionalParameter()));
                         else
-                            return evaluation.configvalue_->set(evaluation.additionalParameter_);
+                            return evaluation.configvalue_->set(removeSlashes(evaluation.additionalParameter_));
                     }
                     else if ((tokens.size() >= 1) && (tokens[0] == COMMAND_EXECUTOR_KEYWORD_SET_CONFIG_VALUE_TEMPORARY))
                     {
                         if (tokens.size() >= 4)
-                            return evaluation.configvalue_->tset(tokens.subSet(3).join() + evaluation.getAdditionalParameter());
+                            return evaluation.configvalue_->tset(removeSlashes(tokens.subSet(3).join() + evaluation.getAdditionalParameter()));
                         else
-                            return evaluation.configvalue_->tset(evaluation.additionalParameter_);
+                            return evaluation.configvalue_->tset(removeSlashes(evaluation.additionalParameter_));
                     }
                 }
Index: /code/branches/core2/src/orxonox/core/ConfigFileManager.cc
===================================================================
--- /code/branches/core2/src/orxonox/core/ConfigFileManager.cc	(revision 1049)
+++ /code/branches/core2/src/orxonox/core/ConfigFileManager.cc	(revision 1050)
@@ -72,5 +72,5 @@
             this->value_ = value;
         else
-            this->value_ = "\"" + addSlashes(value) + "\"";
+            this->value_ = "\"" + addSlashes(stripEnclosingQuotes(value)) + "\"";
     }
 
Index: /code/branches/core2/src/util/String.cc
===================================================================
--- /code/branches/core2/src/util/String.cc	(revision 1049)
+++ /code/branches/core2/src/util/String.cc	(revision 1050)
@@ -254,14 +254,14 @@
     std::string output = str;
 
-    for (unsigned int pos = 0; (pos = output.find('\\', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\\\"); }
-    for (unsigned int pos = 0; (pos = output.find('\n', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\n"); }
-    for (unsigned int pos = 0; (pos = output.find('\t', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\t"); }
-    for (unsigned int pos = 0; (pos = output.find('\v', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\v"); }
-    for (unsigned int pos = 0; (pos = output.find('\b', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\b"); }
-    for (unsigned int pos = 0; (pos = output.find('\r', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\r"); }
-    for (unsigned int pos = 0; (pos = output.find('\f', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\f"); }
-    for (unsigned int pos = 0; (pos = output.find('\a', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\a"); }
-    for (unsigned int pos = 0; (pos = output.find('"', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\\""); }
-    for (unsigned int pos = 0; (pos = output.find('\0', pos)) < std::string::npos; pos += 2) { output.replace(pos, 2, "\\0"); }
+    for (unsigned int pos = 0; (pos = output.find('\\', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\\\"); }
+    for (unsigned int pos = 0; (pos = output.find('\n', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\n"); }
+    for (unsigned int pos = 0; (pos = output.find('\t', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\t"); }
+    for (unsigned int pos = 0; (pos = output.find('\v', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\v"); }
+    for (unsigned int pos = 0; (pos = output.find('\b', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\b"); }
+    for (unsigned int pos = 0; (pos = output.find('\r', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\r"); }
+    for (unsigned int pos = 0; (pos = output.find('\f', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\f"); }
+    for (unsigned int pos = 0; (pos = output.find('\a', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\a"); }
+    for (unsigned int pos = 0; (pos = output.find('"', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\\""); }
+    for (unsigned int pos = 0; (pos = output.find('\0', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\0"); }
 
     return output;
@@ -291,6 +291,7 @@
         output += str[pos];
         pos++;
-    }
-    output += str[str.size() - 1];
+        if (pos == str.size() - 1)
+            output += str[pos];
+    }
 
     return output;
